access測試檔案是否可讀/可寫
阿新 • • 發佈:2019-02-07
Linux核心總是根據程序的有效使用者ID和有效組ID來決定一個程序是否有權訪問某個檔案。因此,在編寫調整使用者ID的程式時,在讀寫一個檔案之前必須明確檢查其使用者是否原本就有對此檔案的訪問許可權。為了實現這種確認,需要使用access函式。
一般形式為;
#include<unistd.h>
int access(const char *pathname,int mode);
其中,pathname是希望檢驗的檔名(包含路徑),mode是欲檢查的訪問許可權,如下所示
R_OK 檢驗呼叫程序是否有讀訪問許可權
W_OK 檢驗呼叫程序是否有寫訪問許可權
X_OK 檢驗呼叫程序是否有執行訪問許可權
F_OK 檢驗規定的檔案是否存在
access檢查使用者對一個檔案的許可權情況,根據mode的值檢查呼叫程序對檔案pathname是否具有讀、寫、或執行的許可權。若程序實際使用者具有mode所指出的許可權,access返回0.否則返回-1.
//access測試檔案存在與否,是否可讀/可寫 /* #include <stdio.h> #include <unistd.h> #define NAME "3.txt" int main(void) { int ret = -1; ret = access(NAME, F_OK); if (ret < 0) { printf("檔案不存在 \n"); return -1; } else { printf("檔案存在 "); } ret = access(NAME, R_OK); if (ret < 0) { printf("不可讀 "); } else { printf("可讀 "); } ret = access(NAME, W_OK); if (ret < 0) { printf("不可寫 "); } else { printf("可寫 "); } ret = access(NAME, X_OK); if (ret < 0) { printf("不可執行 \n"); } else { printf("可執行 \n"); } return 0; }