標準c的io快取型別
全快取:要求填滿整個快取區後才進行i/o系統呼叫操作。對於磁碟檔案通常使用全快取訪問
行快取:涉及乙個終端時(例如標準輸入和標準輸出),使用行快取。
行快取滿自動輸出
碰到換行符自動輸出
無快取:標準錯誤流stderr通常是不帶快取區的,這使得錯誤資訊能夠盡快的顯示出來
檔案操作方式
標準庫函式:遵守iso標準,基於流的i/o,對檔案指標(file結構體)進行操作
系統呼叫:相容posix標準,基於檔案描述符的i/o,對檔案描述符進行操作
檔案描述符
對於核心而言,所有開啟檔案都由檔案描述符引用。檔案描述符是乙個非負整數。當開啟乙個現存盤案或建立乙個新檔案時,核心向程序返回乙個檔案描述符。當讀,寫乙個檔案時,用open或creat返回的檔案描述符標識該檔案,將其作為引數傳送給read或wirte。
在posix應用程式中,整數0,1,2被替換成符號常數(巨集)stdin_fileno stdout_fileno stderr_fileno.這些常數都定義在標頭檔案中。
檔案描述符的範圍是0-open max。早期的unix版本採用的上限值是19(允許每個程序開啟20個檔案),現在很多系統則將其增加至63,linux為1024
標準IO快取
linux的io操作學習總結如下 一 linux對io檔案操作的方式 1.不帶快取 如open read等。這是posix標準,在使用者空間沒有快取,在核心空間還是將進行快取。以寫資料時為例,先呼叫write 函式將資料寫入記憶體緩衝區,可能會呼叫write 多次之後才會將核心空間的緩衝區寫滿,寫滿...
標準IO和不帶快取的IO
分類 unix程式設計 2014 09 17 00 47 42人閱讀收藏 舉報io快取c 最近在看 unix環境高階程式設計 這是自己的一些心得體會。不帶快取的io是什麼,比如read 函式和write 函式,這兩個函式的函式原型如下 需要注意的是這兩個函式都有乙個引數就是buf,這個引數用來指向讀...
不帶快取的I O和標準 帶快取的 I O
ssize t write int fd,const void buf,size t count 寫操作時,設每次寫入長度count 10個位元組,那麼你幾要呼叫10次這個函式才能把這個緩衝區寫滿,此時資料還是在緩衝區,並沒有寫入到磁碟,緩衝區滿時才進行實際上的io操作,把資料寫入到磁碟上,所以上面...