【问题标题】:close()->open() in Linux, how safe is it?Linux 中的 close()->open(),它有多安全?
【发布时间】:2015-02-13 04:21:22
【问题描述】:

Linux 上运行的进程将一些数据写入文件系统上的文件,然后调用 close()。紧接着,另一个进程调用 open() 并从文件中读取。

第二个进程是否总是 100% 保证看到更新的文件? 当使用网络文件系统并且两个进程在同一主机上运行时会发生什么? 当两个进程在不同的主机上时会发生什么?

【问题讨论】:

  • 特别是对于网络文件系统,它取决于文件系统(在 NFS 的情况下,取决于版本和挂载模式)。对于本地足够好的文件系统和相同的主机,一切都是安全的。
  • @BasileStarynkevitch 我正在阅读 NFS 文档,但找不到?我找到了同步/异步,但我知道这是关于将数据同步到物理存储而不是使其可供其他主机使用?

标签: linux filesystems


【解决方案1】:

close() 不保证数据会写入磁盘,您必须为此使用 fsync()。类似问题请参见Does Linux guarantee the contents of a file is flushed to disc after close()?

【讨论】:

  • fsync() 保证文件在断电或内核崩溃的情况下持久存储。我的问题是关于写入和写入内核缓存的两个进程。
猜你喜欢
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多