【问题标题】:In-place editing a file就地编辑文件
【发布时间】:2017-04-09 19:56:14
【问题描述】:

我正在编写一个程序来更改文件。我想要的语义是旧版本应该保留在文件系统上,直到新版本被写入。也就是说,从旧版本到新版本之间的转换应该自动发生。在 Linux 或任何 POSIX 系统上执行此操作的正确方法是什么?

【问题讨论】:

    标签: linux file posix edit


    【解决方案1】:

    以原子方式执行此操作的规范方法是创建一个临时文件,完成后,将其移动以覆盖原始文件。然后你进入一个完全不同的问题领域。看看这个Is rename() without fsync() safe?

    【讨论】:

      【解决方案2】:

      以不同的名称写入新文件,然后调用rename

      【讨论】:

        【解决方案3】:

        我正在编写一个程序来更改文件

        已经存在的程序是patch

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

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

        ... 并使用 patch 命令编辑文件,例如 patch -p0 < name.patch

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-21
          相关资源
          最近更新 更多