1

我得到一个二进制文件(认为它很大)和几个二进制 blob,我应该在文件中间的某个地方插入/替换它们(偏移量是已知的)。

同时用户可以访问该文件,因此我必须“一无所有”,如果她在我更新所有内容之前打开它,则用户拥有该文件的旧版本,或者如果我成功,她拥有一个新版本。

我对 Linux、Windows 和 OS X 的解决方案很感兴趣。当然,实现可能会有所不同。

4

1 回答 1

0

对于 Linux:

  • 在临时文件上做所有事情。
  • fsync()临时文件。
  • rename()临时文件到真实文件。

这个成语称为 atomic-rename。

于 2012-10-01T20:26:39.780 回答