fd與FILE 的關係

2021-07-31 10:16:00 字數 1178 閱讀 3479

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而言,一切皆檔案 和檔案的操作都使用檔案描述符來進行的。檔案描述符是用來訪問檔案的。檔案描述符是乙個非負的整數,是乙個索引值,指向核心中每個程序開啟檔案的記錄表。當開啟乙個現存盤案或建立乙個新檔案時,核心就向程序返回乙個檔案描述符用於後...