创建的文件何时对ext4中的其他进程可见?

时间:2018-05-24 13:41:43

标签: linux concurrency filesystems consistency ext4

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

<li>
    '.(($tweet->tweetID ===$retweet['retweetID']) ?
    '<button class="retweeted" data-tweet="'.$tweet->tweetID.'" data-user="'.$tweet->tweetBy.'"><a href="#"><i class="fa fa-retweet" aria-hidden="true"></i><span class="retweetsCount">'.$tweet->retweetCount.'</span></button>'
    :
    '<button class="retweet" data-tweet="'.$tweet->tweetID.'" data-user="'.$tweet->tweetBy.'"><a href="#"><i class="fa fa-retweet" aria-hidden="true"></i><span class="retweetsCount">'.(($tweet->retweetCount > 0) ? $tweet->retweetCount : '') .'</span></button>' ).'<button class="retweet" data-tweet="'.$tweet->tweetID.'" data-user="'.$tweet->tweetBy.'"><a href="#"><i class="fa fa-retweet" aria-hidden="true"></i><span class="retweetsCount"></span></button>
</li>

在另一个过程中,我尝试立即打开f = open("/tmp/new_file", "w") write(f, "Test") close(f)

问题

  1. 其他进程可以打开文件吗?
  2. 其他流程看到了哪些内容?是/tmp_newfile吗?
  3. 期望

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

    更多问题

    1. 如何确保我的文件更改对其他进程可见? Test似乎有效,但它对性能有害,因为它强制写入磁盘。是否有类似flush的内容使更改对其他进程可见而不将其刷新到磁盘?

1 个答案:

答案 0 :(得分:-1)

  

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

不,不能保证。

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