2016-08-22 48 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明确阐述了这一点:

如果文件数据的读取()可以证明(通过任何方式)的写入之后发生()中的数据,它必须反映写入( ),即使通话是由不同的程序完成的。

相关问题