完全に作成された後にのみ自動的に新しいバージョンに置き換えられるように、既存のファイルを再作成します。

完全に作成された後にのみ自動的に新しいバージョンに置き換えられるように、既存のファイルを再作成します。

一部のUnicesは、「新しいバージョン」が出るまで、カーネルが以前のバージョン(他のプロセスが読み取りにアクセスできるようにする)を使用するように要求するフラグと一緒に書き込みのために既存のファイルを開く方法がありました。します。バージョンが完全に作成され(fdが閉じられた)、この時点からファイルが新しいバージョンとして表示されます。

つまり、他のプロセスでは古いバージョンまたは新しいバージョンを表示できますが、不完全に作成されたバージョンは表示されません。

知識のある人が私にいくつかの指示を与えることができますか?

ベストアンサー1

説明する内容は、オーバーレイファイルのデフォルトの名前変更と同じです。

ファイル名を変更したり、別のファイルの上にファイルを移動したりすると、古いファイルの関連付けが解除されます。これは、ファイルがまだ存在するが、もはやファイルシステムツリーには存在しないことを意味します。これにより、以前のアプリケーションがファイルを開いたままにしておく限り、ファイルにアクセスできます。すべてのアプリケーションが既存のファイルを閉じると、そのファイルは事実上ディスクから割り当て解除されます。

システムrenameコールはアトミック操作です。したがって、これを行うには、別の名前で新しいファイルを作成し、一時ファイルの名前を変更するrenameファイルに変更を呼び出す必要があります。作業はアトミックなので、ファイルが失われる可能性はまったくありません。古いファイルから新しいファイルにすぐに移動されます。
ただし、一時ファイルと置き換えられるファイルは同じマウントポイントになければなりません。

おすすめ記事