1

バイナリ ファイル (大きいと考えてください) といくつかのバイナリ BLOB が与えられ、ファイルの途中に挿入/置換する必要があります (オフセットはわかっています)。

同時に、ユーザーがファイルにアクセスできるようになる可能性があるため、「何もない」必要があります。すべてを更新する前にユーザーがファイルを開いた場合は古いバージョンのファイルを持っているか、成功した場合は新しいバージョンを持っている必要があります。

Linux、Windows、および OS X のソリューションに興味があります。もちろん、実装は異なる場合があります。

4

1 に答える 1

0

Linux の場合:

  • 一時ファイルですべてを行います。
  • fsync()一時ファイル。
  • rename()一時ファイルから実ファイルへ。

このイディオムは、atomic-rename として知られています。

于 2012-10-01T20:26:39.780 に答える