Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 为什么O_追加是原子的_File_Unix_Io - Fatal编程技术网

File 为什么O_追加是原子的

File 为什么O_追加是原子的,file,unix,io,File,Unix,Io,我了解到O_APPEND是原子的,从中我知道当大小低于PIPE_BUF时,O_APPEND是原子的 但是,为什么?在写追加之前,当前文件的偏移量必须更新到文件的末尾,如何对这两个原子进行分级操作 感谢您的回答。最终使用锁或类似的互斥设施。基本上,write-in-append模式作为单个操作提交给内核,内核随后提供必要的联锁,以确保同一文件上的操作是不可分割的。请注意,原子性更像是一种尽力而为的服务,对于网络文件系统等可能会失败。@doynax非常感谢!

我了解到O_APPEND是原子的,从中我知道当大小低于PIPE_BUF时,O_APPEND是原子的

但是,为什么?在写追加之前,当前文件的偏移量必须更新到文件的末尾,如何对这两个原子进行分级操作


感谢您的回答。

最终使用锁或类似的互斥设施。基本上,write-in-append模式作为单个操作提交给内核,内核随后提供必要的联锁,以确保同一文件上的操作是不可分割的。请注意,原子性更像是一种尽力而为的服务,对于网络文件系统等可能会失败。@doynax非常感谢!