根据posix的说法,我的文字什么时候对其他进程可见?

问题描述

如果我打开带有O_CREAT | O_WRONLYwrite文件。 posix是否会说1)其他应用程序可以看到文件夹中的文件(没有fsync),以及2)可以看到我写的内容?我在没有进行fsync的情况下进行close之后也遇到了同样的问题。现在,一旦我的程序结束,它将最终结束吗?我知道fsync会确认我的写操作在磁盘上,但我不需要文件在磁盘上,我需要其他进程可以看到它

解决方法

是的,其他进程会立即看到您的写入。您不需要关闭或fsync。

https://pubs.opengroup.org/onlinepubs/009695399/functions/write.html

可以针对其他读取和写入对写入进行序列化。如果可以证明(通过任何方式)在数据的write()之后发生文件数据的read(),则即使调用是由不同的进程进行的,它也必须反映该write()。类似的要求适用于对同一文件位置的多次写入操作。这是保证从write()调用到后续的read()调用的数据传播所必需的。

例如,这意味着,如果操作系统缓存您的写入而不是将其实际写入磁盘,则需要确保从同一缓存中完成对该文件的任何其他读取。