linux 檔案描述符和inode 的理解和區別

2022-05-30 20:48:10 字數 865 閱讀 8444

inode 或i節點是指對檔案的索引。如乙個系統,所有檔案是放在磁碟或flash上,就要編個目錄來說明每個檔案在什麼地方,有什麼屬性,及大小等。就像書本的目錄一樣,便於查詢和管理。這目錄是作業系統需要的,用來找檔案或叫管理檔案。許多作業系統都用到這個概念,如linux, 某些嵌入式檔案系統等。當然,對某個系統來說,有許多i節點。所以對i節點本身也是要進行管理的。

在linux中,核心通過inode來找到每個檔案,但乙個檔案可以被許多使用者同時開啟或乙個使用者同時開啟多次。這就有乙個問題,如何管理檔案的當前位移量,因為可能每個使用者開啟檔案後進行的操作都不一樣,這樣檔案位移量也不同,當然還有其他的一些問題。所以linux又搞了乙個檔案描述符(file descriptor)這個東西,來分別為每乙個使用者服務。每個使用者每次開啟乙個檔案,就產生乙個檔案描述符,多次開啟就產生多個檔案描述符,一一對應,不管是同乙個使用者,還是多個使用者。該檔案描述符就記錄了當前開啟的檔案的偏移量等資料。所以乙個i節點可以有0個或多個檔案描述符。多個檔案描述符可以對應乙個i節點。

「too manay open files」 錯誤與檔案描述符有關

系統級限制:sysctl命令和proc檔案系統中檢視到的數值是一樣的,這屬於系統級限制,它是限制所有使用者開啟檔案描述符的總和

檢視系統限制命令:

sysctl -a | grep -i file-max --color

cat /proc/sys/fs/file-max

使用者級限制:ulimit命令看到的是使用者級的最大檔案描述符限制,也就是說每乙個使用者登入後執行的程式占用檔案描述符的總數不能超過這個限制

檢視使用者限制命令:  

ulimit -n

使用者級修改在檔案 /etc/security/limits.conf

檔案描述符理解:

linux檔案描述符

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

linux檔案描述符

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

Linux 檔案描述符

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