LinuxC庫函式小結

2021-10-02 19:43:51 字數 2171 閱讀 1394

unistd.h

sys/types.h

sys/stat.h

fcntl.h

…可補充

使用特別簡單一般配合close使用。

int fd=open(「檔名」,檔案的使用方式);

檔案使用方式:

a.o_rdonly o_wronly o_rdwr 唯讀只寫讀寫

b.o_creat(一般與o_excl一起使用)在建立檔案的同時檢查檔案是否已經存在,後面加上檔案可使用的許可權

c.o_trunc 將檔案清零/截斷

要求

要檢查fd的返回值,也就是檔案是否開啟成功,這特別重要

讀檔案,寫檔案。

read(檔案描述符,給定的乙個緩衝區,緩衝區的大小)

返回值有講究:

返回值是零,代表檔案已經讀完了。

返回值是-1,代表開啟檔案失敗。

返回值》0,代表檔案讀的位元組數。

所以一般用返回值來編寫乙個迴圈,判斷檔案是否讀完。

write(檔案描述符,read給的緩衝區,需要寫的檔案的大小)

獲取檔案大小。

lseek(檔案描述符,偏移量,巨集定義)

返回值就代表檔案的大小。

移動檔案指標。

檔案拓展。

lseek(檔案描述符,偏移量,巨集定義)

但是實現檔案的拓展需要在最後實現一次寫操作

巨集seek_set:檔案開始位置

seek_cur:檔案當前位置

seek_end:檔案末尾

偏移量一般為0

獲取檔案屬性資訊

stat(檔案的路徑,接受屬性的stat結構體);

結構體裡面存放檔案的各種屬性。

fstat(檔案描述符,接受屬性的結構體);

lstat與stat引數相同,stat屬於穿透函式,能穿透軟鏈結,直接得到記憶體塊上檔案的大小,而lstat不會,只能得到軟鏈結的大小。linux中有帶l和不帶l的一般都是穿透與不穿透的分別。

測試檔案是否有讀寫執行許可權,以及檔案是否存在。

具體的實現:

access(檔名,許可權類別) 許可權類別:r_ok w… x… f…

類似很多函式呼叫都大同小異,就不再一一贅述了。

可截斷檔案長度,也可拓展檔案長度,拓展檔案長度是不需要像lseek一樣再寫入一些資料的。

例如:檔案長度為100,第二個引數指定為20,檔案將被截斷。而如果第二個引數指定為300,檔案就會被拓展。

link建立硬鏈結,symlink建立軟鏈結。readlink讀取軟鏈結的內容(鏈結的檔案的路徑)和大小。

unlink函式可以處理軟鏈結,符號鏈結,硬鏈結,也可以處理普通檔案。本質是乙個刪除檔案的函式。

利用了unlink不能在檔案開啟的時候刪除的特性。

opendir 開啟乙個目錄

readdir 讀目錄

closedir 關閉目錄

返回的是檔案描述符表中最小的檔案描述符

int dup2(int oldfd,int newfd);返回old

1.如果new是乙個被開啟的檔案描述符,在拷貝之前先關掉new

2.old和new是同乙個,直接返回old

改變已經開啟的檔案的屬性:

linux C庫函式 二

linux c庫函式 二 2010年01月26日 b linux fopen fclose fread fwrite等函式 b b b clearerr 清除檔案流的錯誤旗標 相關函式 feof 表頭檔案 include 定義函式 void clearerr file stream 函式說明 cle...

linux C庫函式 二

linux c庫函式 二 2010年01月26日 b linux fopen fclose fread fwrite等函式 b b b clearerr 清除檔案流的錯誤旗標 相關函式 feof 表頭檔案 include 定義函式 void clearerr file stream 函式說明 cle...

linux C庫函式 三

linux c庫函式 三 2010年01月26日 fseek 移動檔案流的讀寫位置 相關函式 rewind,ftell,fgetpos,fsetpos,lseek 表頭檔案 include 定義函式 int fseek file stream,long offset,int whence 函式說明 ...