就地编辑文件
In-place editing a file
我正在编写一个程序来就地更改文件。我想要的语义是旧版本应该保留在文件系统上,直到新版本被写入。也就是说,从旧版本到新版本之间的转换应该自动发生。在 Linux 或最好在任何 POSIX 系统上执行此操作的正确方法是什么?
以不同的名称写入新文件,然后调用 rename
。
以原子方式执行此操作的规范方法是创建一个临时文件,完成后,将其移动以覆盖原始文件。然后你进入了一个完全不同的问题领域。看看这个Is rename() without fsync() safe?
I am writing a program to change a file in place
已经存在的程序是patch
。
运行 diff -[option] old-file new-file >> name.patch
例如diff -Naur old-file new-file >> name.patch
... 并使用 patch 命令编辑文件,如 patch -p0 < name.patch
我正在编写一个程序来就地更改文件。我想要的语义是旧版本应该保留在文件系统上,直到新版本被写入。也就是说,从旧版本到新版本之间的转换应该自动发生。在 Linux 或最好在任何 POSIX 系统上执行此操作的正确方法是什么?
以不同的名称写入新文件,然后调用 rename
。
以原子方式执行此操作的规范方法是创建一个临时文件,完成后,将其移动以覆盖原始文件。然后你进入了一个完全不同的问题领域。看看这个Is rename() without fsync() safe?
I am writing a program to change a file in place
已经存在的程序是patch
。
运行 diff -[option] old-file new-file >> name.patch
例如diff -Naur old-file new-file >> name.patch
... 并使用 patch 命令编辑文件,如 patch -p0 < name.patch