fstream を閉じると、ファイルシステムへの同期が保証されますか? これについて同僚と議論しており、明確な参照が必要です。私は、標準が何を言っているのか、また、Visual Studio を実装したウィンドウで何が起こるのかに興味があります。
また、close が同期を意味しない場合、同期が確実に行われるようにする標準的な C++ の方法はありますか?
fstream を閉じると、ファイルシステムへの同期が保証されますか? これについて同僚と議論しており、明確な参照が必要です。私は、標準が何を言っているのか、また、Visual Studio を実装したウィンドウで何が起こるのかに興味があります。
また、close が同期を意味しない場合、同期が確実に行われるようにする標準的な C++ の方法はありますか?
ファイルストリームを閉じるとバッファが閉じる方法は、すでに整理されていると確信しています。だから、今、バッファ:
Std'1998 のドラフト: 27.8.1.3.6: basic_filebuf* close();
6 効果: is_open() == false の場合、ヌル ポインターを返します。put 領域が存在する場合は、overflow(EOF)を呼び出して文字をフラッシュします。(...) 最後に、ファイルを閉じます(std::fclose(file) を呼び出して「あたかも」) 308)オーバーフローまたは std::fclose のいずれかの呼び出しが失敗した場合、クローズは失敗します。
overflow()
次に、 27.8.1.4.8 (...)を参照してください。
私はそれをさらに追跡しようとしましたが、どこかにsync
とへの参照がいくつかありましたが、どのようにフラッシュを保証sputc
するかについての正確な文言を追跡することができませんでした。overflow
確かにそうですが、申し訳ありませんが、今日は時間切れです:/