如果我使用write(2)
从Linux上的一个进程写入文件,然后在另一个进程中使用open(2)
和read(2)
,我保证会看到我在没有调用的情况下编写的数据到fsync(2)
或close(2)
?
(请忽略文件名被取消链接或覆盖的可能性,或系统重新启动或另一个进程写入数据的可能性。并假设我在写入和读取之间正确建立了边缘。)
据我所知,数据不保证会保留在磁盘上,但保证第二个进程可见吗?
答案 0 :(得分:6)
posix spec for write
清楚地说明了这一点:
如果在数据的write()之后可以证明(通过任何方式)文件数据的read(),它必须反映write(),即使调用是由不同的进程完成的。