美文网首页
Linux 写文件时 何时 flush buffer

Linux 写文件时 何时 flush buffer

作者: 我的随笔 | 来源:发表于2019-03-21 18:11 被阅读0次

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

流程是:

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

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

仔细查看了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准确性很重要。

相关文章

网友评论

      本文标题:Linux 写文件时 何时 flush buffer

      本文链接:https://www.haomeiwen.com/subject/ckwcvqtx.html