Linux 写文件时 何时 flush buffer

遇到了一个很奇怪的问题,读文件失败。尤其是想要读取特别小的文件的时候。

流程是:

数据流 -> 存入文件 -> 读出文件数据 -> 操作

开始怀疑文件没有保存下来。

仔细查看了log, 文件的打开,写入,关闭都是正常的。

唯一能想到的是,有可能数据在buffer里,关闭的时候,没有冲刷(flush)。所以这个时间点,去读取文件,就会读取失败。

那操作系统什么时间会去flush buffer

查了一下linux manual。 关闭文件的时候,会去flush,所以关闭成功了,数据肯定会写到文件里。

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

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

      underlying file descriptor.


所以文件是写入成功了的。 为什么会读取失败,其实是一个错误的log,读取数据后,操作失败。

log准确性很重要。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容