AFAIK每个进程都会保留单独的文件表(如果我的理解错误,请纠正我)。因此,例如,同时由多个进程在APPEND模式下打开相同的文件,并且每个进程都将一些数据写入文件。它会正确附加在文件末尾。那么任何人都可以解释我一次如何更新所有进程中的文件表吗?提前致谢
答案 0 :(得分:4)
我认为文件表没有更新。只是文件系统在写入之前“寻找”到文件的末尾。
由于允许不相关的进程同时写入文件的末尾,我认为必须涉及某种锁定,不得中断查找和实际写入。
此附加模式是特定文件系统的一项功能,而不是操作系统的功能。我清楚地记得,在Linux上,如果文件驻留在NFS中,O_APPEND
不能做正确的事情。
答案 1 :(得分:0)
APPEND
模式的工作方式是在写入之前搜索文件的末尾(而不是在CURSOR
位置写入,否则)。由于文件的末尾是文件的属性而不是文件表的属性,因此所有进程都将添加到文件的末尾。