C中的 access()函数

来源:互联网 发布:常用的特征选择算法 编辑:程序博客网 时间:2024/06/16 17:33

函数原型:int access(const char* path_name,int mode);

函数功能:判断某个文件是否存在或者是具有某种权限。mode可以为以下参数:

F_OK:判断文件是否存在;

R_OK:判断文件是否具有读权限;

W_OK:判断文件是否具有写权限;

X_OK:判断文件是否具有执行权限;

所需头文件:#include <unistd.h>

注意事项:access()函数只是做权限的检查,并不去考虑文件的形态和内容。所以,当一个目录文件具有写权限时,表示当前目录可以写入,也就是说可以在目录中做创建新文件的操作,但并不是说它就可以当做文件来处理。例如,在DOS下的文件都具有可执行权限,但是使用execve() 函数 执行时则会失败。

函数返回值:函数执行后,如果所有需要检查的权限全部通过,则返回0,只要有一项没有通过检测,就返回-1。

函数使用实例:

#include <stdio.h>#include <unistd.h>int main(void){if(!access("/usr/bin/ldd",F_OK)){printf("文件 /usr/bin/ldd 存在\n");}else{printf("文件 /usr/bin/ldd 不存在\n");}if(!access("/usr/bin/ldd",W_OK)){printf("文件 /usr/bin/ldd 具有 写权限\n");}else{printf("文件 /usr/bin/ldd 不具有 写权限\n");}if(!access("/usr/bin/ldd",R_OK)){printf("文件 /usr/bin/ldd 具有 读权限\n");}else{printf("文件 /usr/bin/ldd 不具有 读权限\n");}if(!access("/usr/bin/ldd",X_OK)){printf("文件 /usr/bin/ldd 具有 执行权限\n");}else{printf("文件 /usr/bin/ldd 不具有 执行权限\n");}return 0;}

函数执行结果:


0 0
原创粉丝点击