【问题标题】:When does a created file become visible to other processes in ext4?ext4 中的其他进程何时可以看到创建的文件?
【发布时间】:2018-05-24 13:41:42
【问题描述】:

考虑这个伪代码和一个 ext4 文件系统:

f = open("/tmp/new_file", "w")
write(f, "Test")
close(f)

在另一个进程中,我尝试在之后立即打开/tmp_newfile

问题

  1. 其他进程可以打开文件吗?
  2. 其他进程看到什么内容?是Test吗?

期望

我希望 (1) 为真(元数据可能在进程之间同步)但 (2) 为假(数据可能被缓冲)

更多问题

  1. 如何确保我的文件更改对其他进程可见? flush 似乎有效,但它对性能不利,因为它强制写入磁盘。有没有像 soft-flush 这样的东西让其他进程可以看到更改而不将其刷新到磁盘?

【问题讨论】:

    标签: linux concurrency filesystems consistency ext4


    【解决方案1】:

    是否保证其他进程可以看到该文件?

    不,不能保证。

    第三个进程可以删除文件,即使您已打开它。

    【讨论】:

    • 它是 POSIX 标准还是 Linux 功能?
    • @ar2015 我不确定你的意思。也许这有点解释:stackoverflow.com/questions/2028874/…
    • 如果不删除怎么办?我只关心文件系统更改是否同步到主文件系统,或者进程是否有“自己的”视图。
    • @GeorgSchölly 如果它没有被删除呢? 那么你需要在你的问题中指定那个约束。 “保证”意味着无论如何文件都是可见的 - 删除只是破坏保证的一种行为。
    • 我的意思是如果unix、free bsd和macOS也遵循同样的原则?
    猜你喜欢
    • 2011-12-02
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多