在linux中使用O_APPEND进行文件写入的原子性

时间:2014-05-30 15:07:59

标签: linux

手册页说明write()系统调用是原子的。这是否意味着如果我有2个进程都将4 GB的文本写入同一个文件,我可以假设第一个写入将写入4 GB,然后是第二个写入完整写入4 GB(假设文件是用O_APPEND标志打开的吗?

或者OS会缓冲两次写入,然后重复调用write(),以便将完整的8 GB更改写成一系列小块吗?如果是这种情况,是否可以保证这些块的顺序,或者第一个进程中的块是否可以与来自另一个块的块交错?

1 个答案:

答案 0 :(得分:1)

Are POSIX' read() and write() system calls atomic?表示写入仅保证对于小于PIPE_BUF字节的写入是原子的,然后仅用于管道操作。

What happens if a write system call is called on same file by 2 different processes simultaneously是关于这个主题的另一个问题,答案相同。