天天看點

CSAPP:第十章 系統級I/O

CSAPP:第十章 系統級I/O

10.1 unix I/O10.2 檔案10.3 讀取檔案中繼資料10.4 讀取目錄内容10.5 共享檔案10.6 我們該使用哪些I/O函數?

10.1 unix I/O

  所有的I/O裝置(例如網絡、磁盤和終端)都被子產品化為檔案,而所有的輸入和輸出都被當作對相應檔案的讀和寫來執行。這種允許Linux核心引出一個簡單、低級的應用接口,稱為Unix I/O,這使得所有的輸入和輸出都能以一種統一且一緻的方式來執行:

  • 打開檔案。
  • 改變目前的檔案位置,
  • 讀寫檔案。
  • 關閉檔案。

10.2 檔案

  每個Linux檔案都有一個類型來表明它在系統中的角色:

  • 普通檔案。包含任意資料。
  • 目錄檔案。包含一組連結的檔案。
  • 套接字。用來與另一個程序進行跨網絡通信的檔案。
  • 命名管道。
  • 字元檔案。
  • 塊裝置。

      Linux核心将所有檔案組織成一個目錄層次結構。

    CSAPP:第十章 系統級I/O

    打開和關閉檔案

      程序通過調用open函數來打開一個已經存在的檔案或者建立一個新的檔案:

  程序通過調用close來關閉一個已經打開的檔案:

讀寫檔案

  應用程式分别調用read和write函數來執行輸入和輸出的。

10.3 讀取檔案中繼資料

  應用程式能夠通過stat和fstat函數,檢索到關于檔案的資訊(有時也稱為檔案的中繼資料)

10.4 讀取目錄内容

  應用可以用readdir系列函數來讀取目錄的内容。

10.5 共享檔案

  • 描述符表。每個程序都有它獨立的描述符表,它的表項是由程序打開的檔案描述符來索引的。每個打開的描述符表項,指向檔案表中的一個表項。
  • 檔案表。打開檔案的集合是由一張檔案表來表示的,所有程序共享這張表。
  • v-node表。同檔案表一樣,所有程序共享這張v-node表。每個表項包含stat結構中的大多數資訊,包括st_mode和st_size成員。

10.6 我們該使用哪些I/O函數?

CSAPP:第十章 系統級I/O

轉載于:https://www.cnblogs.com/ywx123/p/10296362.html