Linux 寫文件時(shí) 何時(shí) flush buffer

遇到了一個(gè)很奇怪的問題,讀文件失敗。尤其是想要讀取特別小的文件的時(shí)候。

流程是:

數(shù)據(jù)流 -> 存入文件 -> 讀出文件數(shù)據(jù) -> 操作

開始懷疑文件沒有保存下來。

仔細(xì)查看了log, 文件的打開,寫入,關(guān)閉都是正常的。

唯一能想到的是,有可能數(shù)據(jù)在buffer里,關(guān)閉的時(shí)候,沒有沖刷(flush)。所以這個(gè)時(shí)間點(diǎn),去讀取文件,就會(huì)讀取失敗。

那操作系統(tǒng)什么時(shí)間會(huì)去flush buffer

查了一下linux manual。 關(guān)閉文件的時(shí)候,會(huì)去flush,所以關(guān)閉成功了,數(shù)據(jù)肯定會(huì)寫到文件里。

The fclose() function flushes the stream pointed to by stream

? ? ? (writing any buffered output data using fflush(3)) and closes the

? ? ? underlying file descriptor.


所以文件是寫入成功了的。 為什么會(huì)讀取失敗,其實(shí)是一個(gè)錯(cuò)誤的log,讀取數(shù)據(jù)后,操作失敗。

log準(zhǔn)確性很重要。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容