1

fstream を閉じると、ファイルシステムへの同期が保証されますか? これについて同僚と議論しており、明確な参照が必要です。私は、標準が何を言っているのか、また、Visual Studio を実装したウィンドウで何が起こるのかに興味があります。

また、close が同期を意味しない場合、同期が確実に行われるようにする標準的な C++ の方法はありますか?

4

2 に答える 2

1

ファイルストリームを閉じるとバッファが閉じる方法は、すでに整理されていると確信しています。だから、今、バッファ:

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確かにそうですが、申し訳ありませんが、今日は時間切れです:/

于 2013-10-22T09:41:36.307 に答える