#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 ...