c++ - 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() 描述让我感到困惑
解决方案
它可能取决于库实现,但对于常见的,它不是。在 ccpreference 中写入的内容意味着内部流缓冲区在关闭之前写入任何未决字节。但它不要求 os 文件系统驱动程序强制立即写入磁盘设备。
推荐阅读
- coding-style - 您可以优化以下功能的不同方法是什么?
- react-native - WebView 加载时未完全显示
- c# - .NET Core 使用 IdentityUser 创建不可为空的 FK 约束
- ssis - SSIS将日期时间变量与数据流中的varchar匹配
- javascript - JavaScript .startWith() 函数在 IE 中不起作用,在 angularjs 项目中
- google-api - 谷歌驱动器 api 客户端(python)更新错误
- java - 如何处理 Kafka Streams 中的不同时区?
- python-3.x - 为什么即使在安装了所有用于在 gpu 中运行 tensorflow 之后,我在 ubuntu 中仍会出现“import tensorflow”错误
- c# - 如何读取 XML 文档并将其值附加到组合框和文本框
- apache-kafka - 具有多个应用程序实例的 Kafka 流