1. 程式人生 > >linux C之access()

linux C之access()

標頭檔案:

#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