1.文件访问测试

  测试调用进程对指定文件是否拥有足够的访问权限

#include <unistd.h>

int access(const char* pathname,int mode);
成功返回0,失败返回 - -pathname:文件路径
-mode:访问权限,可取以下值
R_OK - 可读否
W_OK - 可写否
X_OK - 可执行否
F_OK - 存在否

2.权限掩码: 

   设置调用进程的权限掩码: 

#include <sys/stat.h>

mode_t umask(mode_t cmask);
函数永远成功,返回原来的权限掩码 - cmask :新权限掩码
默认掩码();

3.修改文件权限

    修改指定文件的权限:

#include <sys/stat.h>

int chmod(const char* path,mode_t mode);
int fchmod(int fd,mode_t mode);
成功返回0,失败返回- -path :文件路径
-mode:文件权限
-fd:文件描述符

4.修改文件大小

  指定文件的大小:

    

#include <unistd.h>

int truncate(const char* path,off_t length);
int ftruncate(int fd,off_t length);
成功返回0,失败返回- -path:文件路径
-length:文件大小
-fd:文件描述符

5.内存映射文件

  建立虚拟内存到物理内存或文件的映射

  

#include <sys/mman.h>

void* mmap(void* start,size_t length,int prot,
int flags,int fd,off_t offset);
成功返回映射区内存起始地址,失败返回MAP_FAILED(-) -start:映射区内存起始地址,NULL系统自动选定后返回
-length:映射区字节长度,自动按页(4K)园整
-prot:映射区访问权限,可以取以下值
PROT_READ - 映射区可读
PROT_WRITE -映射区可写
PROT_EXEC -映射区可执行
PROT_NONE -映射区不可访问
-flags:映射标志,可取下值
MAP_ANONYMOUS - 匿名映射,将虚拟内存映射到物理内存而非文件,忽略fd和offset参数
MAP_PRIVATE -对映射区的写操作只反映到缓冲区中,并不会真正写入文件
MAP_SHARED -对映射区的写操作直接反映到文件中
MAP_DENYWRITE -拒绝其他对文件的写操作
MAP_FIXED -若在start上无法创建映射,则失败(无此标志系统会自动调整)
MAP_LOCKED -锁定映射区,保证其不被换出
-offset:文件偏移量

6.解除虚拟内存到物理内存或文件的映射

#include <sys/mman.h>

int munmap(void* start,size_t length);
成功返回0,失败- -start: 映射区内存起始地址,必须是页的首地址
-length:映射区字节长度,自动按页(4K)园整

7.文件硬链接

   创建一个已有硬链接创建一个新的硬链接

#include <unistd.h>

int link(const char* oldpath,const char* newpath);
-oldpath:原始路径
-newpath:新建路径

  删除目录文件里的一个硬链接条目

#include <unistd.h>

int unlink(const char* pathname);
int remove(const char* pathname);
成功返回0,失败-

  修改文件的名字:

#include <stdio.h>

int rename(const char* oldpath,const char* newpath);
成功返回0,失败-

8.符号链接

  

#include <unistd.h>

int symlink(const char* oldpath,const char* newpath);
成功 ,失败- ssize_t readlink(const char* path,char* buf,size_t size); 成功返回拷入buf的符号链接文件的内容的字节数,失败返回-

9.目录的创建

  创建空目录

#include <sys/stat.h>

int mkdir(const char* pathname,mode_t mode);
成功返回0,失败-
--pathname:目录路径
--mode:访问权限,目录的执行权限(x)表示可进入

  删除一个空目录

#include <unistd.h>

int rmdir(const char* pathname);
成功0,失败- -pathname:目录路径

10.当前工作目录

  获取当前工作目录  

#include <unistd.h>

char* getcwd(char* buf,size_t size);

成功返回当前工作目录路径字符串指针,失败返回NULL

-buf:缓冲区
-size:缓冲区大小(字节)

  切换当前工作目录

#include <unistd.h>

int chdir(const char* pathname);
int fchdir(int fd); -path:工作目录路径
-fd:目录工作目录文件描述符(由open函数返回)

11.获取目录内容

  打开目录

#include <dirent.h>

DIR* opendir(const char* name);
DIR* fdopedir(int fd);
成功返回目录流指针,失败返回NULL
-name:目录路径
-fd:目录文件描述符(由open函数返回)

  关闭目录

#include <dirent.h>

int closedir(DIR* dirp);
成功返回0,失败-
-dirp:目录流指针

  读取目录

#include <dirent.h>

struct dirent* readdir(DIR* dirp);
成功返回目录条目指针,读完(不置errno)或失败返回NULL 目录条目结构: struct dirent{
ino_t d_ino; //i节点号
off_t d_off;//下一条目位置
unsingned short d_reclen;//记录长度
unsingned char d_type;//文件类型
char d_name[];//文件名
}; --每个目录中还有两个特殊的条目,其d_name成员的值为“.”,“..”,分别表示该目录本身和其父目录,更目录无父目录 其中表示文件类型的d_type成员,可取以下值
DT_REG -普通文件
DT_DIR -目录
DT_SOCK -本地套节字
DT_CHR -字符设备
DT_BLK -块设备
DT_LNK 符号链接
DT_FIFO 有名管道
DT_UNKNOWN 未知

UNIX C 文件权限 Part2_day01的更多相关文章

  1. 理解Linux文件权限

    任何完整的系统都应该具备有某种形式的安全性.必须用过某种机制来保护文件不被未授权的用户查看或修改:Linux系统遵循了Unix的文件权限的方法,来根据用户与用户组授权,实现文件安全访问. 1.Linu ...

  2. unix文件权限

    一.UNIX下关于文件权限的表示方法和解析 SUID 是 Set User ID, SGID 是 Set Group ID的意思. UNIX下可以用ls -l 命令来看到文件的权限.用ls命令所得到的 ...

  3. linux文件权限表示及用户权限管理

    UNIX/Linux下关于文件执行权限的表示和查看想必是最熟悉不过的,然而你是否真正了解用户文件的权限标识和用户的权限呢? 实际上文件权限标识不仅仅只有U, G, O 11 10 9 8 7 6 5 ...

  4. RHEL7文件权限

    本文介绍Linux下的文件权限 操作系统为RHEL7.2_X86_64 可以从以下三种访问方式限制访问权限: 1 只允许用户自己访问 2 允许一个预先指定的用户组中的用户访问 3 允许系统中的任何用户 ...

  5. Linux文件权限;ACL;Setuid、Setgid、Stick bit特殊权限;sudo提权

    相关学习资料 http://blog.sina.com.cn/s/blog_4e2e6d6a0100g47o.html http://blog.csdn.net/aegoose/article/det ...

  6. 菜鸟学Linux命令:chmod命令和数字文件权限

    chmod是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数.只有文件所有者和超级用户可以修改文件或目录的权限.可以使用绝对模式,符号模式指定文件的权限 ...

  7. Linux常用命令_(文件权限)

    Linux权限管理: 二.权限管理1.3种基本权限在Linux中,将使用系统资源的人员分为4类:超级用户.文件或目录的属主.属主的同组人和其他人员.超级用户拥有对Linux系统一切操作权限,对 于其他 ...

  8. Linux 文件权限总结

    在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...

  9. (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理

    用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李 ...

随机推荐

  1. java 的collection

    参考:http://skyuck.iteye.com/blog/526358 https://www.tutorialspoint.com/java/java_collections.htm Prio ...

  2. footer在最低显示

    footer在最低显示 http://stackoverflow.com/questions/585945/how-to-align-content-of-a-div-to-the-bottom

  3. IIS发布后出现“如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题”错误

    VS2010运行程序没有任何问题,但是发布到IIS以后,连接数据库时报错:“尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle ...

  4. compact处理流程分析

    compact处理流程分析 compact的处理与split同样.由client端与flush时检查发起. 针对compact另一个在rs生成时生成的CompactionChecker线程定期去检查是 ...

  5. Jmeter压测问题_Non HTTP response code: java.net.ConnectException

    负载机压测,线程500,服务器根本无压力,负载机本身发的请求都是失败的 Sample result如下: Thread Name: 考勤(考勤提交) 1-255 Sample Start: 2018- ...

  6. Oracle数据库版本号定期检视与升级的必要性分析

    目 录 ▇1.ORACLE数据库版本号知识 ▇2.看看自己的数据库还有没有支持服务 ▇3.看11.2.0.3版本号各PSU的公布时间与解决BUG数量列表 ▇4.看11.2.0.4版本号各PSU的公布时 ...

  7. luogu1169 棋盘制作

    题目大意 有一个有m*n个格子的矩形,每个格子都有黑或白两种颜色.现要求将该矩形分别裁剪成一个小矩形或一个小正方形,使得这个矩形和正方形是个国际象棋棋盘,且面积最大. 题解 首先,为了简化问题,我们每 ...

  8. 使用playonlinux安装windows软件

    转载 http://qspy.is-programmer.com/posts/40913.html Wine提供了一个用来运行Windows程序的平台.PlayOnLinux 是使用 Python 写 ...

  9. KD树——k=1时就是BST,里面的数学原理还是有不明白的地方,为啥方差划分?

    Kd-Tree,即K-dimensional tree,是一棵二叉树,树中存储的是一些K维数据.在一个K维数据集合上构建一棵Kd-Tree代表了对该K维数据集合构成的K维空间的一个划分,即树中的每个结 ...

  10. poj 2288 Islands and Bridges ——状压DP

    题目:http://poj.org/problem?id=2288 状压挺明显的: 一开始写了(记忆化)搜索,但一直T: #include<iostream> #include<cs ...