多进程下如何以追加模式打开文件

4
据我所知,每个进程都将维护一个单独的文件表(如果我的理解有误,请纠正)。因此,例如,同一文件以追加模式被多个进程同时打开,并且每个进程都向文件写入一些数据。它会被正确地附加到文件末尾。那么,有人能解释一下所有进程中的文件表如何同时更新吗?提前致谢。
2个回答

4
我认为文件表没有被更新。只是文件系统在写入之前“寻找”到文件的末尾。
由于允许不相关的进程同时写入文件的末尾,因此我相信必须涉及某种锁定,查找和实际写入不能被中断。
这种追加模式非常适用于特定的文件系统,而不是操作系统的特性。我清楚地记得,在Linux上,如果文件位于NFS中,O_APPEND不能正常工作。

谢谢您的帮助。顺便问一下,每个进程是否维护文件表? - CrazyCoder
@Winbros 在任何合理的操作系统上,每个进程确实都有一个打开文件表,但这与您的APPEND问题无关。 - cnicutar

0

APPEND 模式的工作方式是在写入之前执行到文件末尾的搜索(与在 CURSOR 位置写入相反)。由于文件的结尾是文件的属性而不是文件表的属性,因此所有进程都将添加到文件的末尾。


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