|
用于检查进程对指定文件或目录的访问权限的系统调用。它可以检查文件是否存在以及当前用户是否具有某种权限(如读、写或执行权限)。 1.头文件 #include 2.函数原型 int access(const char *pathname, int mode); 3.参数 1)pathname:指向要检查的路径名的指针。 2)mode:表示要检查的访问权限的类型,它可以是以下值的组合: ⚫F_OK: 检查文件是否存在。 ⚫R_OK: 检查是否具有读取权限。 ⚫W_OK: 检查是否具有写入权限。 ⚫X_OK: 检查是否具有执行权限。 除了以上单个使用,也可以使用“|”进行组合使用,如: ⚫R_OK | W_OK: 检查读取和写入权限。 ⚫R_OK | X_OK: 检查读取和执行权限。 4.返回值 成功返回0,失败返回-1。需要注意的是,如果使用组合使用,只要其中一项不通过,就会返回-1. 5.示例:(使用access检查文件权限) #include #include #include
int main(){ const char *file="file_rw.txt"; int res=0; printf("flie name:%s\n",file); res = access(file, F_OK); if (res == 0) printf("File exists: OK\n"); else { printf("File exists: NO\n"); exit(0); }
res = access(file, R_OK); if (res == 0) printf("Read permission: OK\n"); else printf("Read permission: NO\n"); res = access(file, W_OK); if (res == 0) printf("Write permission: OK\n"); else printf("Write permission: NO\n");
res = access(file, X_OK); if (res == 0) printf("Execution permission: OK\n"); else printf("Execution permission: NO\n");
exit(0); } 6.创建测试文件并改修权限为766,增加读写权限 $ touch file_rw.txt $ chmod 643 file_rw.txt $ ll file_rw.txt -rw-r---wx 1 elf forlinx 0 8月 23 15:56 file_rw.txt* 7.测试结果 $ ./access_test flie name:file_rw.txt File exists: OK Read permission: OK Write permission: OK Execution permission: NO 可以看到文件的执行结果,打印出了测试文件名为file_rw.txt,测试文件存在且有读写权限,并没有执行权限。
|