我的情况如下:
我使用一个进程来编写新文件,并在完成后关闭它。 另一个进程在第一个进程完成后立即打开此文件进行读取。不用说,这两个进程都驻留在同一个客户端上。
我的工作平台是OS X,它使用HFS +文件系统。
根据封闭的人页:
成功关闭并不能保证数据已成功保存到磁盘,因为内核会延迟写入。当流关闭时,文件系统刷新缓冲区并不常见。如果您需要确保数据是物理存储的,请使用fsync(2)。 (这取决于此时的磁盘硬件。)
这意味着该文件不一定会保存到磁盘。但是,在关闭文件后,我只关心相关性,并且我不会使用fsync,因为它非常耗时。
是否保证第二个进程从缓存中读取更新的数据 - 尽管它还没有被刷新到磁盘?