Linux access函数
函数功能
access函数用于检查用户/进程对一个文件的权限情况,包括读、写、执行的权限。因为Linux内核是根据进程的有效用户ID和有效组ID来决定一个进程具有某个文件的访问权限。因此,在编写调整用户ID的程序时,在访问一个文件之前必须明确检查该用户是否拥有对此文件的访问权限。
函数原型
1. 引用头文件
#include <stdio.h>
#include <unistd.h>
2. 函数原型
int access(const char *pathname, int mode);
3. 形参
参数名称 | 含义 |
---|---|
pathname | 文件名称,包括路径 |
mode | 检查权限模式 |
“mode”权限模式包括几类:
模式 | 键值 | 含义 |
---|---|---|
F_OK | 0 | 文件是否存在 |
R_OK | 1 | 文件读权限 |
W_OK | 2 | 文件写权限 |
X_OK | 4 | 文件执行权限 |
从键值可以看出,RWX可以或(“|”)的形式一起使用,如"R_OK|W_OK|X_OK"。
4. 返回值
函数执行成功返回0,失败返回-1,错误原因存于errno中。错误原因可以参考Linux常用错误码。
例程代码
#include <stdio.h>
#include <unistd.h>
int main(int argc, int **argv)
{
if(access("test.txt", F_OK)==0)
printf("File exist\n");
else
printf("File not exist\n");
if(access("test.txt", R_OK)==0)
printf("File can read\n");
else
printf("File can not read\n");
if(access("test.txt", W_OK)==0)
printf("File can write\n");
else
printf("File can not write\n");
if(access("test.txt", X_OK)==0)
printf("File can exec\n");
else
printf("File can not exec\n");
return 0;
}