首页 > 解决方案 > ofstream::close() 在 linux 上调用同步吗?

问题描述

关于这个问题:在 Linux 上是否 close() 调用 fsync()?

这个问题描述了 close() (c lib) 在 linux 上不调用同步。

fstream::close() 是否也一样?:

http://www.cplusplus.com/reference/fstream/fstream/close/建议确实将所有剩余字节写入文件。我观察到(罕见的)情况,我完成将 2-3KB 的块写入文件,调用 fs.close() 然后尝试打开它并且打开失败。添加一个短暂的延迟和/或调用同步似乎可以解决这个问题。

所以我想我已经回答了自己的问题,但是 std::fstream::close() 描述让我感到困惑

标签: c++linuxfstream

解决方案


它可能取决于库实现,但对于常见的,它不是。在 ccpreference 中写入的内容意味着内部流缓冲区在关闭之前写入任何未决字节。但它不要求 os 文件系统驱动程序强制立即写入磁盘设备。


推荐阅读