2017-04-09 127 views
0

我正在編寫一個程序來更改文件。我想要的語義是舊版本應保留在文件系統上,直到寫入新版本。也就是說,從舊版本到新版本之間的轉換應該是原子性的。在Linux或最好是任何POSIX系統上執行此操作的正確方法是什麼?就地編輯文件

回答

3

執行atomicaly的規範方法是創建一個臨時文件,當您完成後,將其移動以覆蓋原始文件。然後你進入一個完整的其他領域的問題。看看這個Is rename() without fsync() safe?

0

以不同的名稱寫新文件,然後致電rename

0

我寫一個程序到位

已經存在的程序是patch更改的文件。

運行diff -[option] old-file new-file >> name.patch

例如diff -Naur old-file new-file >> name.patch

...並使用patch命令編輯文件,如patch -p0 < name.patch