linux之檔案描述符

2021-10-03 03:24:41 字數 525 閱讀 4194

檔案描述符是乙個非負整數。

按照慣例,unix系統shell把檔案描述符0與程序的標準輸入關聯,檔案描述符1與標準輸出關聯,檔案描述符2與標準錯誤關聯。

當應用程式開啟乙個現有檔案或者建立乙個新檔案時,核心會向程序返回乙個檔案描述符。對於核心而言,所有開啟的檔案都通過檔案描述符引用。

上圖基本描繪出了檔案描述符和檔案的關係。每個程序都有一張屬於自己的檔案描述符表,該錶包含兩列:檔案描述符和檔案指標。通過檔案描述符找到檔案指標,繼而找到由核心維護的系統級檔案表中的檔案項,再根據該檔案項中的inode節點指標找到同樣由核心維護的i-node表,最終通過i節點找到對應的檔案。

乙個i節點對應乙個檔案,可有多個目錄項指向同乙個i節點,如上圖中1936i節點就有兩個指標指向。每個i節點中都有乙個鏈結計數,其值表示的是指向該i節點的目錄項個數。除此之外,i節點還包含了檔案有關的所有資訊:檔案型別、檔案訪問許可權位、檔案長度以及指向檔案資料塊的指標等等。

文中圖來自:

linux檔案描述符

本文介紹了檔案描述符,1 首先說什麼是檔案描述符,它有什麼作用?檔案描述符是乙個簡單的整數,用以標明每乙個被程序所開啟的檔案和socket。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案,並指定訪問該檔案的方式,呼叫成功後返回乙個檔案描述符。creat 開啟乙個檔案,如果該檔案不存在,則建立它...

linux檔案描述符

當某個程式開啟檔案時,作業系統返回相應的檔案描述符,程式為了處理該檔案必須引用此描述符。所謂的檔案描述符是乙個低階的正整數。最前面的三個檔案描述符 0,1,2 分別與標準輸入 stdin 標準輸出 stdout 和標準錯誤 stderr 對應。因此,函式 scanf 使用 stdin,而函式 pri...

Linux 檔案描述符

我們之前就知道在linux作業系統下 一切皆檔案 所以在這個條件下,所有研究的物件都變相的相當於研究檔案,那麼對檔案系統的研究也應該是必須的。我們的核心利用檔案描述符來訪問檔案,每個檔案描述符都是非負整數,開啟現存的檔案或者是新建檔案時,核心會返回乙個檔案描述符,讀寫檔案也需要使用檔案描述符來指定待...