2016-08-22 33 views
3

如果我使用write(2)在Linux上從一個進程寫入文件,然後在另一個進程中寫入open(2)read(2),我保證能看到我未寫入fsync(2)close(2)的數據嗎?linux:是否將數據寫入文件以保證對其他進程可見?

(請忽略的可能性,文件名是未鏈接或覆蓋,或者重新啓動系統或其它進程寫數據,並假設我已經正確建立的寫入和讀出之間的邊緣。)

我知道數據不能保證在磁盤上保存,但是它保證在第二個進程中可見?

+2

你試圖解決什麼問題?或者你只是要求它的機制?如果沒有編程問題,那麼這個問題在這裏是offtopic,更適合於[unix.stackexchange.com](http://unix.stackexchange.com) –

+0

問題是保證數據的可見性,這是​​一個編程問題蜜蜂。 – jacobsa

+0

如果寫入文件不能保證其他進程可以讀取它,那麼文件的重點是什麼? – Barmar

回答

6

posix spec for write明確闡述了這一點:

如果文件數據的讀取()可以證明(通過任何方式)的寫入之後發生()中的數據,它必須反映寫入( ),即使通話是由不同的程序完成的。

相關問題