【发布时间】:2015-01-09 13:50:54
【问题描述】:
我有两个文件,A 和 B,每个文件都有自己的内容。
我想交换这两个文件,所以A 会变成B,而B 会变成A。但是我想保证没有其他进程会发现这两个文件处于不一致状态,也没有任何进程会发现这些文件中的任何一个丢失,即使是很短的时间。所以,作为一个副业,我也想保证,如果在操作过程中出现任何问题,什么都不会改变(我猜有点像交易)。
在 OS X 上,有一个 exchangedata() 函数,所以我想我正在寻找一个与它等效的 Linux,或者至少是一种用于执行原子文件交换的等效方法。
【问题讨论】:
-
@Frédéric Hamidi - 你发布的问题的答案根本不符合我的标准,所以我想这不是重复的。
-
我认为那里的答案会适合你,但我猜你不想在出现问题时留下一个临时文件?
-
是的,而且我想保证我不会删除原始文件。如果第一步成功,我将有效地删除该文件。然后,如果第二步失败,我将不得不回滚。如果回滚也失败了,我会因为破坏客户的系统而陷入困境;)