Linux access 函式使用

2021-07-26 08:30:33 字數 2654 閱讀 9330

linux access函式功能描述: 檢查呼叫程序是否可以對指定的檔案執行某種操作。

linux access函式用法: 

#include 

#include 

int access(const char *pathname, int mode);

linux access函式引數: 

pathname: 需要測試的檔案路徑名。 

mode: 需要測試的操作模式,可能值是乙個或多個r_ok(可讀?), w_ok(可寫?), x_ok(可執行?) 或 f_ok(檔案存在?)組合體。

linux access函式返回說明: 

成功執行時,返回0。失敗返回-1,errno被設為以下的某個值 

einval: 模式值無效 

eacces: 檔案或路徑名中包含的目錄不可訪問 

eloop : 解釋路徑名過程中存在太多的符號連線 

enametoolong:路徑名太長 

enoent:路徑名中的目錄不存在或是無效的符號連線 

enotdir: 路徑名中當作目錄的元件並非目錄 

erofs: 檔案系統唯讀 

efault: 路徑名指向可訪問的空間外 

eio:輸入輸出錯誤 

enomem: 不能獲取足夠的核心記憶體 

etxtbsy:對程式寫入出錯

linux access函式例子: 

例子: 

#include

#include

#include

#include

int main(int argc, char *argv) 

if (access(argv[1], f_ok) == -1)  

if (access(argv[1], r_ok) == -1) 

puts("you can't read the file!"); 

else 

if (access(argv[1], r_ok | w_ok) != -1) 

puts("you can read and write the file"); 

else 

puts("you can read the file"); 

exit(0); 

} #include

#include

#include

#include

int main(int argc, char *argv) 

if (access(argv[1], f_ok) == -1)  

if (access(argv[1], r_ok) == -1) 

puts("you can't read the file!"); 

else 

if (access(argv[1], r_ok | w_ok) != -1) 

puts("you can read and write the file"); 

else 

puts("you can read the file"); 

exit(0); 

}由於linux access函式只作許可權的核查,並不理會檔案形態或檔案內容,因此,如果一目錄表示為「可寫入」,表示可以在該目錄中建立新檔案等操作,而非意味此目錄可以被當做檔案處理。例如,你會發現dos的檔案都具有「可執行」許可權,但用execve執行時則會失敗。

linux access函式(判斷是否具有訪問檔案的許可權)

相關函式

stat,open,chmod,chown,setuid,setgid

表頭檔案

#include

定義函式

int access;

linux access函式說明

access會檢查是否可以讀/寫某一已存在的檔案。引數mode有幾種情況組合, r_ok,w_ok,x_ok 和f_ok。r_ok,w_ok與x_ok用來檢查檔案是否具有讀取、寫入和執行的許可權。f_ok則是用來判斷該檔案是否存在。由於access只作許可權的核查,並不理會檔案形態或檔案內容,因此,如果一目錄表示為「可寫入」,表示可以在該目錄中建立新檔案等操作,而非意味此目錄可以被當做檔案處理。例如,你會發現dos的檔案都具有「可執行」許可權,但用execve執行時則會失敗。

linux access函式返回值

若所有欲查核的許可權都通過了檢查則返回0值,表示成功,只要有一許可權被禁止則返回-1。

錯誤**

eaccess 引數pathname 所指定的檔案不符合所要求測試的許可權。

erofs 欲測試寫入許可權的檔案存在於唯讀檔案系統內。

efault 引數pathname指標超出可訪問記憶體空間。

einval 引數mode 不正確。

enametoolong 引數pathname太長。

enotdir 引數pathname為一目錄。

enomem 核心記憶體不足

eloop 引數pathname有過多符號連線問題。

eio i/o 訪問錯誤。

linux access函式附加說明

使用access作使用者認證方面的判斷要特別小心,例如在access後再做open的空檔案可能會造成系統安全上的問題。

範例/ 判斷是否允許讀取/etc/passwd /

#include

int main

執行/etc/passwd can be read

Linux access函式講解

引數介紹 access pathname,mode 0 1 2 4 pathname 是檔案的路徑名 檔名 mode 指定access的作用,取值如下 f ok 值為0,判斷檔案是否存在 x ok 值為1,判斷對檔案是可執行許可權 w ok 值為2,判斷對檔案是否有寫許可權 r ok 值為4,判斷對...

函式 使用函式指標操作函式

設計乙個名為calculate 的函式,他接受兩個double 值和乙個指向函式的指標,而被指向的函式接受兩個double引數,並返回乙個double值 calculate 函式的型別也是double,並返回被指向的函式值用calculate 的兩個double引數計算得到的值。例如,假設add 函...

eval函式 php PHP eval函式使用介紹

eval echo hello world 上邊 等同於下邊的 echo hello world 在瀏覽器中都輸出 hello world 運用eval 要注意幾點 1.eval函式的引數的字串末尾一定要有分號,在最後還要另加乙個分號 這個分號是php限制 2.注意單引號,雙引號和反斜槓的運用。如果...