前言:
這一部分基本就是檔案的讀取與寫入的介紹,然後講訴了檔案描述符表與檔案打開表,以及健壯的RIO讀寫檔案程式。這一部分與APUE以及UNP中的部分内容是很相似的,是以會介紹的比較簡單。
我的github:
我實作的代碼全部貼在我的github中,歡迎大家去參觀。
https://github.com/YinWenAtBIT
第十章:系統級I/O
定義:
輸入/輸出是在主存和外部裝置之間拷貝資料的過程,輸入操作時外部裝置拷貝到記憶體,輸出是記憶體拷貝到外部的I/O裝置
一、RIO包健壯的讀寫:
1. RIO包的靈感:
來自《UNIX網絡程式設計》中的readn與writen函數已經readline函數。不過原本的readline函數不是線程安全的。這個RIO版本的改進了這個問題。
共享檔案:
一、描述符表:
每個程序都有自己的描述符表,它的表項是由程序打開的檔案描述符來索引的。每個打開描述符都指向檔案表中的一個表項。
二、檔案表:
打開檔案的集合由檔案表來表示,所有的程序共享這張表,每個檔案表的表項,包括目前的檔案位置,引用計數,以及一個指向v-node表中對應表項的指針。關閉一個描述符會減少相應的檔案表表項的引用計數。核心會在計數為0 時删除這個表項。
I/O重定向:
使用dup2函數,将描述符指向想要指向的檔案表項,即可實作IO重定向。
總結:
這一部分内容沒有太多要注意的,已經在UNP中學習過。不再是問題。