【转】C语言中access函数
头文件:unistd.h
功 能: 确定文件或文件夹的访问权限。即,检查某个文件的存取方式,比如说是只读方式、只写方式等。如果指定的存取方式有效,则函数返回0,否则函数返回-1。
用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );
参数说明:
filenpath
文件或文件夹的路径,当前目录直接使用文件或文件夹名
备注:当该参数为文件的时候,access函数能使用mode参数所有的值,当该参数为文件夹的时候,access函数值能判断文件夹是否存在。在WIN NT 中,所有的文件夹都有读和写权限
mode
要判断的模式
在头文件unistd.h中的预定义如下:
#define R_OK 4 /* Test for read permission. */ #define W_OK 2 /* Test for write permission. */ #define X_OK 1 /* Test for execute permission. */ #define F_OK 0 /* Test for existence. */
具体含义如下:
R_OK 只判断是否有读权限
W_OK 只判断是否有写权限
X_OK 判断是否有执行权限
F_OK 只判断是否存在
access函数程序范例(C语言中)
/*int access(const char *pathname, int mode);
此函数用于检测某个指定路径的文件(第一个参数 pathname),是否符合第二个参数选项(F_OK(是否是存在的文件),R_OK(是否可读),W_OK(是否可以写入),X_OK(是否可以运行);当参数1满足参数2条件时候返回0,不满足返回-1;(此处刚刚好和字符串比对返回值类似)*/
//参考代码如下:
#include<stdio.h> #include<unistd.h> #include<stdlib.h> char * myboolean(int p); int main(int argc,char **argv) { int a,b,c,d; a=access(argv[1],F_OK); b=access(argv[1],R_OK); c=access(argv[1],W_OK); d=access(argv[1],X_OK); printf("存在?%s,可读?%s,可写?%s,可运行?%s\n",myboolean(a),myboolean(b),myboolean(c),myboolean(d)); exit(0); } char * myboolean(int p)/*此函数为了方便结果而定义的布尔运算*/ { char *f =NULL; if(p<0) return f="否"; if(p==0) return f="是"; } /***********************************************************************************************/