c - close() 在 Linux 上调用 fsync() 吗?

标签 c linux unix

<分区>

当我们调用 close(<fd>) , 它会自动执行 fsync()同步到物理媒体?

最佳答案

事实并非如此。调用 close() 并不能保证内容在磁盘上,因为操作系统可能已延迟写入。

作为旁注,请始终检查 close() 的返回值。它会让您知道到那时为止的任何延迟错误。如果您想确保内容在磁盘上,请始终调用 fsync() 并检查其返回值。

要记住的一件事是后备存储是什么。有些设备可能会进行内部写入延迟,并且在某些情况下可能会丢失内容(尽管较新的存储介质设备通常具有 super 电容器来防止这种情况发生,或者有禁用此功能的方法)。

关于c - close() 在 Linux 上调用 fsync() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15348431/

相关文章:

linux - 如何使用 GIT 从远程获取所有已删除的本地文件

未找到安卓 adb

linux - Bash:从 chroot 和切换用户中执行命令

linux - 无线局域网phy0硬阻止

PHP Cron 作业返回 "-: error while loading shared libraries: libc.so.6: ELF load command past end of file"

c - 64 位可执行文件的运行速度比 32 位版本慢

c - 涉及威尔逊定理的素数测试未按计划进行

c - strcpy 导致 C 程序崩溃

C 程序标准输入文件名访问

c++ - 获取子窗口句柄\C++