頭文件: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="是"; } /***********************************************************************************************/
