ofstream::close() 是否在 Linux 上调用同步?

does ofstream::close() call sync on linux?

本文关键字:调用 Linux 同步 是否 close ofstream      更新时间:2023-10-16

这个问题:close(( 在 Linux 上调用 fsync(( 吗?

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

这是否与 fstream::close((?:

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

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

它可能取决于库实现,但对于常见的实现,它不依赖于库实现。以 ccp 首选项写入的内容意味着内部流缓冲区在关闭之前写入任何挂起的字节。但它不会请求操作系统驱动程序强制在磁盘设备上立即写入。

do ofstream::close(( 调用同步...

它将刷新流内部的缓冲区,并关闭它。是否与syncfsync相媲美的东西被称为不分钱。

。在 Linux 上?

这取决于实施。因此,这可能取决于您使用的标准库实现。如果你使用开源的,你可以看看源代码,看看它的作用。