根据 POSIX,我的写入什么时候对其他进程可见?
According to POSIX, when will my writes be visible to other processes?
如果我用 O_CREAT | O_WRONLY
和 write
打开一个文件。 POSIX 是否表示 1) 其他应用程序可以看到文件夹中的文件(没有 fsync)和 2) 能够看到我写的内容?
在我 close
没有 fsync
之后同样的问题。
现在我的程序结束后终于可以了吗?我知道 fsync 会确认我的写入是在磁盘上,但我不需要我的文件在磁盘上,我需要它对其他进程可见
是的,其他进程会立即看到您的写入。您不需要关闭或 fsync。
https://pubs.opengroup.org/onlinepubs/009695399/functions/write.html
Writes can be serialized with respect to other reads and writes. If a read() of file data can be proven (by any means) to occur after a write() of the data, it must reflect that write(), even if the calls are made by different processes. A similar requirement applies to multiple write operations to the same file position. This is needed to guarantee the propagation of data from write() calls to subsequent read() calls.
这意味着,例如,如果 OS 缓存您的写入而不是实际将其写入磁盘,它需要确保从同一缓存中完成对该文件的任何其他读取。
如果我用 O_CREAT | O_WRONLY
和 write
打开一个文件。 POSIX 是否表示 1) 其他应用程序可以看到文件夹中的文件(没有 fsync)和 2) 能够看到我写的内容?
在我 close
没有 fsync
之后同样的问题。
现在我的程序结束后终于可以了吗?我知道 fsync 会确认我的写入是在磁盘上,但我不需要我的文件在磁盘上,我需要它对其他进程可见
是的,其他进程会立即看到您的写入。您不需要关闭或 fsync。
https://pubs.opengroup.org/onlinepubs/009695399/functions/write.html
Writes can be serialized with respect to other reads and writes. If a read() of file data can be proven (by any means) to occur after a write() of the data, it must reflect that write(), even if the calls are made by different processes. A similar requirement applies to multiple write operations to the same file position. This is needed to guarantee the propagation of data from write() calls to subsequent read() calls.
这意味着,例如,如果 OS 缓存您的写入而不是实际将其写入磁盘,它需要确保从同一缓存中完成对该文件的任何其他读取。