1. 程式人生 > >Linux中檔案描述符fb和檔案指標FILE*的聯絡與區別

Linux中檔案描述符fb和檔案指標FILE*的聯絡與區別

檔案描述符:

linux中,當一個程序開啟一個檔案或者是建立一個新檔案時,核心向程序返回一個檔案描述符來標示該檔案。

檔案描述符是一個非負整數,實際上它是一個索引,指向核心為程序所維護的一個檔案記錄表
在這裡插入圖片描述

任何程式執行起來都會開啟三個預設的流,標準輸入流,標準輸出流,標準錯誤流通常情況下對應的硬體為鍵盤,顯示器,顯示器。 三個流的檔案標示符為 0,1,2 。因為預設的三個流已經設定好,後面開啟的檔案,檔案描述符從3,4,5開始依次向後。

檔案指標FILE*

檔案指標變數標示符,一般形式為大寫,可以看出是系統定義的一個結構體,該結構體中含有一系列檔名,檔案狀態,當前位置資訊,檔案描述符fd,還有緩衝區等

C語言定義一個FILE*的物件時:

// 表示fp是一個指向FILE結構體的指標
// 通過fp可以讀寫該檔案,或者操作檔案,習慣的稱為fp為檔案指標。
FILE *fp; 

檔案標示符fd和檔案指標FILE*的區別

FILE*中的內容包含檔案描述符。 使用fopen、fclose、fread、fwirte對檔案進行操作時,在lib層。 而檔案描述符在系統呼叫層。系統呼叫的介面為write/read、close/open 它們的返回值為fd。

在這裡插入圖片描述