1 file結構體的內容
struct file
結構體定義在
/linux/include/linux/fs.h
)中,檔案結構體代表乙個開啟的檔案,系統中每個開啟的檔案在核心空間都有乙個關聯的
struct file
。它由核心在開啟檔案時建立,並傳遞給在檔案上進行操作的任何函式。在檔案的所有例項都關閉後,核心釋放這個資料結構。在核心建立和驅動原始碼中,
struct file
的指標通常被命名為
file
或filp。
2 檔案描述符fd與檔案指標file*的關係
使用fopen,fclose,fread,fwrite對檔案進行操作,他們屬於c庫函式,在lib層中。返回值為file*。file*為檔案指標。
檔案指標是指向乙個
file
的結構體,
這個結構體裡包括乙個檔案描述符和乙個
i/o緩衝區
。檔案描述符用於
c標準的
io庫呼叫中,用於標識檔案。
系統呼叫介面為:open/close/read/write
他們的返回值為檔案描述符(fb),型別為int.
檔案描述符就是
open
檔案時產生的乙個很小的正整數,是乙個索引值,它用於
unix
系統中,用於標識檔案。
核心會為每乙個執行中的程序在程序控制塊pcb中維護乙個開啟檔案的記錄表,也就是檔案物件表,每乙個表項都有乙個指標指向開啟的檔案,上邊的索引值就是記錄表的索引值。
開啟乙個程序後,要開啟預設的輸出輸入流,他們分別為:
stderr,stdin , stdout.對應的檔案描述符為0,1,2
c語言檔案指標域檔案描述符之間可以相互轉換:
int fileno(file * stream)
file * fdopen(int fd, const char * mode)
file的結構
typedef struct _iobuf file;
struct _iobuf ;
fd與FILE的比較
linux中一切皆檔案,這句話我們都知道,可見檔案的重要性,因此檔案的管理在linux中佔據了很大比重,那麼作業系統怎麼管理檔案的呢?要管理乙個東西,那麼必須經歷兩個步驟 描述和組織。當我們開啟乙個檔案時,系統就會生成乙個叫做file的結構體,系統正是用這個file結構體來描述單個檔案的 既然已經描...
檔案描述符fd和FILE的關係
1.file的內容 file在c中作為乙個結構體存在結構如下 struct iobuf 其中file的緩衝區指標用來緩衝資料,flag用來確定開啟檔案的許可權,file為檔案描述符,0為stdin,1為stdout,2為stderror,接下來為使用者檔案。2.檔案描述符fd 首先明白fd與file...
fd與FILE結構體的縱向對比
檔案描述符 fd 對於linux而言,所有對裝置 對於linux而言,一切皆檔案 和檔案的操作都使用檔案描述符來進行的。檔案描述符是用來訪問檔案的。檔案描述符是乙個非負的整數,是乙個索引值,指向核心中每個程序開啟檔案的記錄表。當開啟乙個現存盤案或建立乙個新檔案時,核心就向程序返回乙個檔案描述符用於後...