您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在UNIX中,文件附加原子吗?

在UNIX中,文件附加原子吗?

小于“ PIPE_BUF”大小的写操作应该是原子的。该长度至少应为512字节,尽管它可以轻易变大(Linux似乎将其设置为4096)。

假设您正在谈论所有完全符合POSIX的组件。例如,在NFS上并非如此。

但是,假设您写入在“ O_APPEND”模式下打开的日志文件并将行(包括换行符)的长度保持在“ PIPE_BUF”字节以下,则应该能够使多个写入者写入日志文件而不会出现任何损坏问题。任何中断都将在写入之前或之后到达,而不是在中间。如果希望文件完整性在重新启动后仍然存在,则还需要fsync(2)在每次写操作后调用它,但是这样会降低性能

澄清:请阅读评论Oz Solomon的回答。我不确定O_APPEND应该具有这种PIPE_BUF原子性。这完全有可能是Linux的实现方式write(),或者可能是由于底层文件系统的块大小所致。

其他 2022/1/1 18:28:20 有411人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶