【问题标题】:How to change file contents automically?如何自动更改文件内容?
【发布时间】:2012-09-22 14:10:49
【问题描述】:

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

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

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

【问题讨论】:

  • 你的问题在细节上有点缺乏。你是怎么打开文件的?您正在创建应用程序吗?打开文件时,总是通过我们的应用程序吗?您使用什么语言?
  • 是的,我正在创建一个应用程序。我想具体的语言无关紧要,所以让我们考虑 C++。我的应用程序知道是否有人通过 inotify/WinAPI 打开文件。

标签: windows linux macos file filesystems


【解决方案1】:

对于 Linux:

  • 在临时文件上执行所有操作。
  • fsync() 临时文件。
  • rename()临时文件转真实文件。

这个成语被称为 atomic-rename。

【讨论】:

  • 这是一种直接的解决方案,但临时文件至少需要两倍的空间。
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 2018-02-05
  • 2020-07-04
  • 2015-10-28
  • 1970-01-01
相关资源
最近更新 更多