gpt4 book ai didi

python - 如何以编程方式确定 "write"系统调用在特定文件上是否是原子的?

转载 作者:太空狗 更新时间:2023-10-30 03:06:38 24 4
gpt4 key购买 nike

在某些情况下,编码人员不能依赖于原子性的系统调用,例如如果文件在 NFS 文件系统上。 (参见 NFS Overview, FAQ and HOWTO Documents)。但是大多数数据库工作最终都需要原子系统调用。 (参见 Atomicity of database systems)。

是否有一种标准(和操作系统无关)的方式来确认写入(和其他系统调用)在 C(或 python)中的特定文件上是原子的。

有什么建议吗?

后续注释:管道上的原子性在下面讨论:

请特别注意专门处理 O_APPEND 的“手册”页面摘录:

If the O_APPEND flag of the file status flags is set, the file offset shall be set to the end of the file prior to each write and no intervening file modification operation shall occur between changing the file offset and the write operation.

最佳答案

write POSIX 中定义的调用根本没有原子性保证。所以你不需要确认任何东西,它不是原子的。

如果它成功完成,它甚至不能保证数据会到达硬盘驱动器(如果有驱动器的话)。成功读回数据也不会给您任何保证。

您需要使用 sync 系列函数来获得一些持久性保证。

关于python - 如何以编程方式确定 "write"系统调用在特定文件上是否是原子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7660293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com