私が理解しているように、データをストレージデバイスに同期したい場合は、 fsync() を使用して、おそらくすべての OS 出力キャッシュをフラッシュできます...しかし、ドキュメントがあなたをだまそうとするのとは異なり、明らかにこれはまったく保証されません、データがディスクに書き込まれない可能性があります!
これは、データの破損につながる可能性があるため、多くの場合にはあまり適していません。データが(可能な限り)書き込まれたことを保証し、データの破損を防ぐために、POSIXライブラリを(可能であれば移植可能な方法で)使用するにはどうすればよいですか?
fdatasync() はありますが、OSX には実装されていません。より優れた移植性の高い方法がありますか?それとも、異なるシステムに異なるコードを実装する必要がありますか? fdatasync() で十分かどうかもわかりません。
もちろん、最悪のシナリオでは、これを忘れて、ACID を使用する冗長データベース ライブラリを使用してデータを保存することもできます。私はそれをしたくありません。
また、切り捨て操作と名前変更操作が確実に完了したことを確認する方法にも興味があります。
ありがとう!