linux C函式之access函式的用法【轉】
阿新 • • 發佈:2018-12-10
1.函式功能:
檢查呼叫程序是否可以對指定的檔案執行某種操作。
2.函式原型:
1)函式標頭檔案
-
#include <stdio.h>
-
#include <unistd.h>
2)函式
int access(const char * pathname, int mode)
3)形參
pathname:需要檢測的檔案路勁名
mode:需要測試的操作模式。
4)函式返回值說明
成功執行時,返回0。失敗返回-1,errno被設為以下的某個值 EINVAL: 模式值無效 EACCES: 檔案或路徑名中包含的目錄不可訪問 ELOOP : 解釋路徑名過程中存在太多的符號連線 ENAMETOOLONG:路徑名太長 ENOENT:路徑名中的目錄不存在或是無效的符號連線 ENOTDIR: 路徑名中當作目錄的元件並非目錄 EROFS: 檔案系統只讀 EFAULT: 路徑名指向可訪問的空間外 EIO:輸入輸出錯誤 ENOMEM: 不能獲取足夠的核心記憶體 ETXTBSY:對程式寫入出錯
5)mode說明
-
R_OK 測試讀許可權
-
W_OK 測試寫許可權
-
X_OK 測試執行許可權
-
F_OK 測試檔案是否存在
3.函式例項
-
#include <stdio.h>
-
#include <unistd.h>
-
int main(void)
-
{
-
if(access("test.txt", R_OK)==0) printf("READ OK\n");
-
if(access("test.txt", W_OK)==0) printf("WRITE OK\n");
-
if(access("test.txt", X_OK)==0) printf("EXEC OK\n");
-
if(access("test.txt", F_OK)==0) printf("File exist\n");
-
}