linux C之access()
阿新 • • 發佈:2019-02-09
標頭檔案:
#include<unistd.h>
原型:
int access(const char* path,int mode);
函式說明:
mode可以有幾種情況組合:R_OK、W_OK、X_OK和F_OK
R_OK、W_OK、X_OK用來檢查檔案是否具有讀取、寫入和執行的許可權;
F_OK用來判斷該檔案是否存在。
如果一個目錄表示為可以寫入,則表示可以在該目錄建立新檔案等操作。
返回值:
若所有欲查核的許可權都通過了檢查則返回0值,表示成功;只要有一項許可權被禁止則返回-1。
錯誤程式碼:
EACCESS 引數path 所指定的檔案不符合所要求測試的許可權。
EROFS 欲測試寫入許可權的檔案存在於只讀檔案系統內。
EFAULT 引數pathname指標超出可存取記憶體空間。
EINVAL 引數mode 不正確。
ENAMETOOLONG 引數pathname太長。
ENOTDIR 引數pathname為一目錄。
ENOMEM 核心記憶體不足
ELOOP 引數pathname有過多符號連線問題。
EIO I/O 存取錯誤。
範例:
#include<unistd.h>
int main()
{
if(access("test",W_OK) == 0)
printf("the file can be write\n");
}
cygwin下編譯:
gcc access.c -o access
執行:./access