Linux中文件描述符和打開文件之間的關系


Linux中文件描述符和打開文件之間的關系

文件描述符: 在形式上是一個非負整數。實際上,它是一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。

Linux中的文件類型

Linux系統中把一切都看做文件,包括普通文件-、目錄文件d、字符設備文件c、塊設備文件b、符號鏈接文件l。文件描述符是內核為了高效管理已被打開的文件所創建的索引(一個非負整數),用於指代已被打開的文件,Linux下所有的的I/O操作的系統調用都是通過文件描述符執行。例如0表示標准輸入、1表示標准輸出、3表示標准錯誤
,文件描述符會在這個基礎上遞增。

文件描述符、文件、進程之間的關系

  • 每個文件描述符都指向一個打開的文件相對應
  • 不同的文件描述符可能指向同一個打開的文件
  • 相同的文件可能被不同的進程打開,也可以在被同一個進程打開多次

文件描述符表: 進程級的列表,也就是用戶區的一部分,進程每打開一個文件就會新建一個文件描述符,同時只能通過文件描述符的函數訪問,否則進程無法直接對其進行訪問。
系統文件表: 系統級的列表,對當前系統的所有進程都共享,每條條目包含文件偏移量、訪問模式以及指向它的文件描述符的條目計數
文件系統索引節點表: inode索引節點表(UID、GID、ctime、mtime、atime、讀寫執行權限、鏈接數、block位置)

記錄內容

記錄內容

例子

例子


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM