Linux中使用O_APPEND实现文件写操作的原子性

3
人手册说明write()系统调用是原子的。这是否意味着如果我有2个进程都将4 GB文本写入同一个文件,我可以假设第一次写入将写入其4 GB,然后第二次写入将完全写入其4 GB(假设使用了O_APPEND标志打开了该文件)?
或者操作系统会缓冲这两个写入操作,然后进行重复的write()调用,以便将所有8GB更改作为一系列小块写入?如果是这种情况,是否有任何关于这些块顺序的保证,还是来自第一个进程的块可以与来自另一个进程的块交错?
1个回答

1

这是否只适用于对管道的写入操作? - Reck
我相信你是对的 - 实际上,就像我在链接的问题的答案中所建议的那样,文件写入没有原子性保证 - 我已经编辑了上面的答案以澄清。 - mc110

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接