標準IO快取

2021-08-09 01:46:24 字數 479 閱讀 3389

linux的io操作學習總結如下:

一、linux對io檔案操作的方式:

1.不帶快取:如open ,read等。這是posix標準,在使用者空間沒有快取,在核心空間還是將進行快取。以寫資料時為例,先呼叫write()函式將資料寫入記憶體緩衝區,可能會呼叫write()多次之後才會將核心空間的緩衝區寫滿,寫滿之後或者執行強制寫入硬碟操作才會將資料寫入磁碟中,寫入過程如下:write資料--->核心快取區--->磁碟。

2.帶快取區:如fopen,fwrite,fget等,是c標準庫中定義的。不僅核心空間進行快取,流也有快取區。以寫操作為例,呼叫fwrite()將資料寫入流快取中,流快取寫滿後呼叫write()

將資料寫入核心快取區,直到寫滿核心快取區或者執行強制寫入硬碟操作之後,才進行實際的io操作。標準io操作函式fwrite()會呼叫無快取操作write().寫入過程:fwrite()資料--->流快取區--->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操作,把資料寫入到磁碟上,所以上面...

標準c的IO快取型別

標準c的io快取型別 全快取 要求填滿整個快取區後才進行i o系統呼叫操作。對於磁碟檔案通常使用全快取訪問 行快取 涉及乙個終端時 例如標準輸入和標準輸出 使用行快取。行快取滿自動輸出 碰到換行符自動輸出 無快取 標準錯誤流stderr通常是不帶快取區的,這使得錯誤資訊能夠盡快的顯示出來 檔案操作方...