如果我使用write(2)
从Linux上的一个进程写入文件,然后在另一个进程中open(2)
和read(2)
,我保证看到我写入的数据,而不调用fsync(2)
或close(2)
?
(请忽略文件名未被链接或覆盖的可能性,或系统重新启动或另一个进程写入数据的可能性,并假设我已正确build立了写入和读取之间的边界。
我知道数据不能保证在磁盘上保存,但保证在第二个进程中可见?
write
的posix规范清楚地说明了这一点:
如果一个read()文件数据可以被证明(通过任何方法)在write()之后发生,那么它必须反映write(),即使这个调用是由不同的进程完成的。