Linux系統呼叫 access函式詳解

2021-05-21 13:42:01 字數 1251 閱讀 4808

linux系統呼叫--access函式詳解

2007-07-30 23:10

【access系統呼叫】

功能描述:

檢查呼叫程序是否可以對指定的檔案執行某種操作。

用法:

#include

#include

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

引數:

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

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

返回說明:

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

einval: 模式值無效  

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

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

enametoolong:路徑名太長

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

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

erofs: 檔案系統唯讀

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

eio:  輸入輸出錯誤

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

etxtbsy:對程式寫入出錯

例子:

/* test.c */

#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);

文章出處:diy部落(http://www.diybl.com/course/6_system/linux/linuxjs/20081012/150297.html)

linux 系統呼叫

使用者應用可以通過兩種方式使用系統呼叫。第一種方式是通過c庫函式,包括系統呼叫在c庫中的封裝函式和其他普通函式。圖5.2 使用系統呼叫的兩種方式 第二種方式是使用 syscall巨集。2.6.18版本之前的核心,在include asm i386 unistd.h檔案中定義有7個 syscall巨集...

Linux系統呼叫

一 實驗目的和要求 1.學習linux核心的配置和編譯 2.深入理解linux系統呼叫 3.理解arm和x86的cpu模式 系統模式 使用者模式 的不同 4.掌握核心模組的編寫方法。二 實驗器材 1.linux實驗板卡一塊 2.5v 1a電源乙個 3.microusb線一根 4.macos一台 5....

Linux系統呼叫

linux系統呼叫 系統呼叫 system call 是使用者空間訪問核心的唯一手段,除異常和陷入外,他們是核心唯一的合法入口。通常情況下應用程式是通過應用程式設計介面api來訪問函式,而不是直接使用系統呼叫來程式設計。作業系統通常是通過中斷從使用者態切換到核心態。中斷就是乙個硬體或軟體請求,要求c...