我有兩個文件,分別爲A
和B
,每個文件都有自己的內容。在Linux上原子交換兩個文件的內容
我想交換這兩個文件,所以A
會變成B
,而B
會變成A
。但是我想保證沒有其他進程會發現這兩個文件處於不一致的狀態,即使很短的時間,任何進程都不會找到這些文件丟失的任何文件。所以,作爲一項副業務,我還想保證,如果在操作過程中出現任何問題,什麼都不會改變(有點像我猜想的交易)。
在OS X上有一個exchangedata()
函數,所以我想我正在尋找一個相當於它的Linux,或者至少是一個用於執行原子文件交換的等價方法。
@FrédéricHamidi - 您發佈的問題的答案根本不符合我的標準,所以我想它不是重複的。 – antonone
我認爲那裏的答案適合你,但我想如果出現問題,你不想留下臨時文件? –
是的,以及我想有一個保證,我不會刪除原始文件。如果第一步移動成功,我將有效移除文件。那麼,如果第二招將失敗,我將不得不回滾。如果回滾也失敗了,我就會因爲破壞客戶系統而陷入困境;) – antonone