2017-04-09 86 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