0

O_CREAT | O_WRONLY如果我用它打开一个文件write。posix 是否说 1)其他应用程序可以看到文件夹中的文件(没有 fsync)和 2)能够看到我写的内容?在我close没有 fsync 之后同样的问题。现在终于会在我的程序结束后吗?我知道 fsync 会确认我的写入在磁盘上,但我不需要我的文件在磁盘上,我需要它对其他进程可见

4

1 回答 1

2

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

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

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

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

于 2020-09-27T21:51:07.270 回答