ファイルの保存 ここまでいくつかの見落としがちな処理を見てきましたが、最後にどんなプログラマでも必ず行う「ファイルの保存」についての注意点を考察してみたいと思います。 ファイルを確実に書き込むためには、どのようなコードを書けばよいでしょうか。「fsync」を呼べばいい。それだけではありません。実際には、次の2点も必要になってきます。 (内容の差し替えだった場合に)書き換え途中の状態にならないこと ユーザに対して書き込み完了を返したあとは、ディスクがクラッシュしない限り、データが消えないこと UNIX系OSでこれらの要件を満たすには、まずテンポラリファイルに新しいデータを書いてディスクに同期し(①②)、(必要ならば)古いファイルをバックアップファイル名を使っても参照できるよう別名を付与し(③)、次にテンポラリファイルのファイル名を差し替え対象になっているファイルの名前に切り替え(
![第6回 UNIXプログラミングの勘所(4) | gihyo.jp](https://cdn-ak-scissors.b.st-hatena.com/image/square/b4abdbaf3f58dd9491ed8749cea9d7d68d38f355/height=288;version=1;width=512/https%3A%2F%2Fgihyo.jp%2Fassets%2Fimages%2FICON%2F2022%2F1905_perl-hackers-hub.png)