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核心将所有檔案組織成一個目錄層次結構。
打開和關閉檔案
程序通過調用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函數?
轉載于:https://www.cnblogs.com/ywx123/p/10296362.html