Linux的檔案描述符

2022-09-05 03:42:12 字數 1047 閱讀 2313

檔案描述符(fd)

• 檔案描述符(file descriptor)是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數(通常是小整數),用於指代被開啟的檔案,所有執行i/o操作的系統呼叫都通過檔案描述符。

• 我們都知道在linux下一切皆檔案。當然裝置也不例外,如果要對某個裝置進行操作,就不得不開啟此裝置檔案,開啟檔案就會獲得該檔案的檔案描述符fd( file discriptor), 它就是乙個很小的整數,每個程序在pcb(process control block)中儲存著乙份檔案描述符表,檔案描述符就是這個表的索引,每個表項都有乙個指向已開啟檔案的指標。

• 在linux中,程序是通過檔案描述符(file descriptors,簡稱fd)而不是檔名來訪問檔案的,檔案描述符實際上是乙個整數。linux中規定每個程序能最多能同時使用nr_open個檔案描述符,這個值在fs.h中定義,為1024*1024(2.0版中僅定義為256)。

• linux中最大檔案描述符的限制有兩個方面,乙個是使用者級限制,乙個是系統級限制。

這三個表的結構

理解具體情況,需要了解由核心維護的3個資料結構:

程序級檔案描述符表(file descriptor table)

系統級開啟檔案表(open file table)

檔案系統i-node表(i-node table)

使用者通過作業系統處理資訊的過程中,使用的互動裝置檔案(鍵盤,滑鼠,顯示器)

stdin,標準輸入,預設裝置是鍵盤,檔案編號為0

stdout,標準輸出,預設裝置是顯示器,檔案編號為1,也可以重定向到檔案

stderr,標準錯誤,預設裝置是顯示器,檔案編號為2,也可以重定向到檔案

linux檔案描述符

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

linux檔案描述符

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

Linux 檔案描述符

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