c++ - 确保 fsync 完成其工作

标签 c++ c linux filesystems

fsync 的手册页说:

If the underlying hard disk has write caching enabled, then the data may not really be on permanent storage when fsync() / fdatasync() return.

有什么方法可以确保数据物理写入磁盘吗?

最佳答案

不,没有。

使用fsync,您可以告诉操作系统将其写入磁盘,就操作系统而言,它已被写入磁盘。

如果磁盘伪造了这一点,那么不幸的是,您无法真正更改它。 使用适当的磁盘系统(即 BBU raid 设置),您可以简单地启用/禁用写入缓存来避免这种情况。

请注意,如果您指定 O_DIRECTO_SYNC 标志,它应该将其写入磁盘:http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html

关于c++ - 确保 fsync 完成其工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11612165/

相关文章:

c++ - C 简单 RingBuffer - 多线程 - 查找关键部分

c++ - 在循环中使用getline,存储到数组

c++ - 如何将 qspaceritem 添加到 qgridlayout

c++ - Qt:用QPainter画垂直方向的文字?

c - 像下面这样使用 exec() 的函数的返回值是多少?

c - 使用 malloc 创建的结构数组不会使用 free 和 realloc 删除或调整最后一个元素的大小

linux - 借助 expect 自动登录的 Shell 脚本

linux - 如何在 makefile 中指定将结果发送到哪里

c - smp 系统上的 Posix 线程

c++ - 基于客户端服务器的多人游戏的最佳更新频率