關於linux系統呼叫介面解析

2021-08-09 13:27:00 字數 2531 閱讀 4219

#include #include #include int stat(const char *path, struct stat *buf);

int lstat(const char *pathname, struct stat *buf);

功能: 獲取檔案狀態資訊

stat和lstat的區別:

當檔案是乙個符號鏈結時,lstat返回的是該符號鏈結本身的資訊;

而stat返回的是該鏈結指向的檔案的資訊。

引數: path:檔名

buf:儲存檔案資訊的結構體

返回值:

成功: 0

失敗: -1

struct stat結構體說明:

struct stat ;
st_mode(16位整數)引數說明

[外鏈轉存失敗(img-z6burzrv-1564143537364)(assets/1527683997494.png)]

檔案型別判斷應使用巨集函式

[外鏈轉存失敗(img-utsynfxz-1564143537370)(assets/1527684045659.png)]

測試程式:

int main()

return 0;

}

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

功能:測試指定檔案是否具有某種屬性

引數: pathname:檔名

mode:檔案許可權,4種許可權

r_ok: 是否有讀許可權

w_ok: 是否有寫許可權

x_ok: 是否有執行許可權

f_ok: 測試檔案是否存在

返回值:

0: 有某種許可權,或者檔案存在

-1:沒有,或檔案不存在

access("txt", f_ok);
#include int chmod(const char *pathname, mode_t mode);

功能:修改檔案許可權

引數: filename:檔名

mode:許可權(8進製數)

返回值:

成功:0

失敗:-1

#include int chown(const char *pathname, uid_t owner, gid_t group);

功能:修改檔案所有者和所屬組

引數: pathname:檔案或目錄名

owner:檔案所有者id,通過檢視 /etc/passwd 得到所有者id

group:檔案所屬組id,通過檢視 /etc/group 得到使用者組id

返回值:

成功:0

失敗:-1

#include #include int truncate(const char *path, off_t length);

功能:修改檔案大小

引數: path:檔案檔案名字

length:指定的檔案大小

a)比原來小, 刪掉後邊的部分

b)比原來大, 向後拓展

返回值:

成功:0

失敗:-1

#include int link(const char *oldpath, const char *newpath);

引數: oldpath:原始檔名字

返回值:

成功:0

失敗:-1

#include int symlink(const char *target, const char *linkpath);

引數: target:原始檔名字

返回值:

成功:0

失敗:-1

#include ssize_t readlink(const char *pathname, char *buf, size_t bufsiz);

引數: pathname:軟連線名

buf:存放軟體對應的檔名

bufsiz :緩衝區大小(第二個引數存放的最大位元組數)

返回值:

成功:>0,讀到buf中的字元個數

失敗:-1

#include int unlink(const char *pathname);

引數: pathname:刪除的檔案名字

返回值:

成功:0

失敗:-1

#include int rename(const char *oldpath, const char *newpath);

功能:把oldpath的檔名改為newpath

引數:oldpath:舊檔名

newpath:新檔名

返回值:

成功:0

失敗:-1

系統呼叫IO介面

int open const char pathname,int flags,mode t mode 功能 開啟檔案 pathname 指定要開啟的檔名稱 flages 選項引數 必選引數 o rdonly 讀 o wrnoly 寫 o rdwr 只能選一 讀寫 可選引數 o creat 若檔案存在...

Linux系統呼叫及使用者程式設計介面 API

1 linux系統呼叫 所謂系統呼叫是指作業系統提供給使用者程式呼叫的一組 特殊 介面,使用者程式可以通過這組 特殊 介面獲得作業系統核心提供的服務。例如,使用者可以通過程序控制相關的系統呼叫來建立程序 實現程序之間的通訊等。在這裡,為什麼使用者程式不能直接訪問系統核心提供的服務呢?這是由於在lin...

Linux 檔案相關系統呼叫介面(IO)

早期在寫c語言介面的時候,我們可以通過fopen來開啟乙個檔案,下面這段兩段 為例 hello.c寫檔案 1 include 2 include 3 int main 4 9 const char msg hello world n 10 int count 5 11 while count 14 ...