概念:所有的i/o裝置都被模型化為檔案,而所有的輸人作對相應檔案的讀和寫來執行。這種將裝置優雅地對映為檔案的方式,允許linux核心出乙個簡單、低階的應用介面,稱為unix 1/o。(**於《深入計算機系統基礎 第三版》)
分別呼叫read和write函式來執行輸入和輸出
觀察以下**:
what would this program point for file containing 「abcde」
#include
intmain
(int argc,
char
*ar**)
輸出結果
/*
$ ./ffiles1 abcde.txtc1 = a, c2 = a, c3 = b
*/
原因分析:
最初fd1,fd2,fd3都在不同的程序中開啟fname檔案,dup2函式的作用是可以複製乙個函式描述符,等價於close(oldfd);fcntl(oldfd, f_dupfd, newfd);。dup2(fd2, fd3); 的作用即為使fd2的指令賦給fd3,即fd3原來的指令不再起作用,而是跟在fd2的指令之後再次執行fd2指令。因此fd1指令執行的c1=a;fd2重新開啟乙個新的檔案,因此讀取的第乙個字元為c2=a;由於呼叫dup2函式的原因,fd3跟在fd2後執行,由於第乙個字元a已經被fd2指令讀取,因此fd3讀取的字元c3=b。
此次的技術日誌的概念部分有**於《深入計算機系統基礎 第三版》以及自己對系統i/o的理解。
**分析部分的****於課上ppt,**分析純原創,花了一定時間用心去理解了「讀和寫檔案」的部分。碼字不易,如果有不正確的地方希望指出包涵。
《深入理解計算機系統》 系統級I O
關於i o可以先參考這些文章,但是這裡可能還是有所不同。分析系統級別的i o有什麼不一樣的地方。檔案i o 高階i o 標準庫i o 開篇介紹了三個級別的i o的區別之處。所有語言的執行時系統都提供執行i o的較高階別的工具。例如,標準i o庫 在unix系統中,是通過使用由核心提供的系統級i o函...
26 深入理解計算機系統筆記,系統級I O
1 乙個 unix 檔案就是乙個 m位元組的序列 b0b1b2.bm 1 所有的 io裝置,如網路,磁碟,終端,都被模型化為檔案,而所有的輸入和輸出都被當作對相應檔案的讀和寫來執行。2 所有的輸入和輸出都被當作統一的方式來處理 1 開啟檔案。乙個應用程式通過要求核心開啟相應的檔案,來宣告它想要訪問乙...
26 深入理解計算機系統筆記,系統級I O
1 乙個 unix 檔案就是乙個 m位元組的序列 b0 b1b2 b m 1 所有的 io裝置,如網路,磁碟,終端,都被模型化為檔案,而所有的輸入和輸出都被當作對相應檔案的讀和寫來執行。2 所有的輸入和輸出都被當作統一的方式來處理 1 開啟檔案。乙個應用程式通過要求核心開啟相應的檔案,來宣告它想要訪...