linux系統檔案操作函式(三)

2021-08-18 02:59:57 字數 2811 閱讀 3902

1 access 函式

作用 測試指定檔案是否擁有某種許可權

標頭檔案:unistd.h

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

引數 pathname –> 檔名

mode –> 許可權類別

r_ok 是否有讀許可權

w_ok 是否有寫許可權

x_ok 是否有執行許可權

f_ok 測試乙個檔案是否存在

返回值

0 –> 所有欲查核的許可權都通過了檢查

-1 –> 有許可權被禁止

#include#include#includeint main(int argc,char *argv)

int ret = access(argv[1],w_ok);

if(ret == -1)

printf("you can write this file.\n");

return 0;

}

2 chmod函式

作用 改變檔案的許可權

原型 int chmod( const char *filename, int pmode );

引數 filename –> 檔名

pmode –> 許可權

必須是乙個8進製數

返回值

0 –> 改變成功

-1 –> 失敗

#include#include#includeint main(int argc,char *argv)

int ret = chmod(argv[1],0777);

if(ret == -1)

printf("you can chmod this file.\n");

return 0;

}

3 chown函式

作用 改變檔案的所有者

原型 int chown(const char *path, uid_t owner, gid_t group);

返回值

0 –> 成功

-1 –> 失敗

4 truncate函式

表頭檔案:#include 原型

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

path --> 檔案路徑

length --> 指定的檔案大小

**注釋:

(1)如果當前檔案的大小為100位元組。指定的length為20位元組。那麼執行結果是這個檔案只剩20位元組,其他80位元組會被刪除。

(2)如果當前檔案大小為100位元組,指定length為300位元組。那麼執行結果是這個檔案被拓展了。

返回值 0 --> 執行成功

-1 --> 執行失敗

#include#include#includeint main(int argc,char *argv)

int ret = truncate(argv[1],17);

if(ret == -1)

printf("%s has been truncated.\n",argv[1]);

return 0;

}

5 鏈結

(1)link函式

作用 建立乙個硬鏈結可以達到與「ln 」命令一樣的效果。

原型 int link(const char *oldpath, const char *newpath);

(2)symlink 函式,函式形式與link一樣

作用:建立乙個軟連線,可以達到與「ln -s 」命令一樣的效果。

(3)readlink 函式

原型 ssize_t readlink(const char *path, char *buf, size_t bufsiz);

作用:讀軟連線對應的檔名,不是讀內容

(4)unlink 函式

作用 刪除乙個檔案的目錄項並減少它的鏈結數,若成功則返回0,否則返回-1,錯誤原因存於errno。

如果想通過呼叫這個函式來成功刪除檔案,你就必須擁有這個檔案的所屬目錄的寫和執行許可權。

原型:

int unlink(const char * pathname);

使用 1. 如果是符號鏈結,刪除符號鏈結

2. 如果是硬鏈結,硬鏈結數減1,當減為0時,釋放資料塊和inode

3. 如果檔案硬鏈結數為0,但有程序已開啟該檔案,並持有檔案描述符,則等該程序關閉該檔案時,kernel才真正去刪除該檔案利用該特性建立臨時檔案,先open或creat建立乙個檔案,馬上unlink此檔案

int main(int argc,char *argv)

int fd = open(argv[1],o_rdwr|o_creat,0777);//***建立乙個臨時檔案***

if(fd == -1)

int ret = unlink(argv[1]);//**刪除檔案,但由於此時檔案是開啟的,不能刪除掉**

if(ret == -1)

write(fd,"this is my test\n",100);//寫檔案

lseek(fd,0,seek_set);//**將檔案指標復位**

char buf[100]=;

read(fd,buf,sizeof(buf));//讀檔案

printf("%s\n",buf);

close(fd);//**關閉檔案。此時臨時檔案會被unlink刪除。**

return 0;

linux系統檔案操作函式(一)

1 stat函式 標頭檔案 include include 函式原型 int stat const char file name,struct stat buf 函式說明 通過檔名filename獲取檔案資訊,並儲存在buf所指的結構體stat中 返回值 執行成功則返回0,失敗返回 1,錯誤 存於e...

Linux 檔案操作函式

底層檔案操作函式 includeint open const char pathname,int flags int open const char pathname,int flags,mode t mode 返回值 成功,返回檔案描述符 失敗,返回 1,失敗原因記錄在errno中 int clo...

Linux檔案操作函式

寫專案的時候,當我把實現linux的基本功能的 寫完之後,寫斷點續傳時,有點難度 我對lseek學的不好 send這個函式是不能傳整形值的只能傳字元型別 1 open int open const char filename,int flag,int mode 返回值 1 1 出錯 2 0 返回乙個...