私たちは、コンソール上で多くのコメントを生成する複雑なコンソールベースのツールを構築しています。これらのツールは大量のデータを処理するため、実行にはコストがかかり、必要以上に頻繁に実行することは望ましくありません。特に、既に繰り返し実行する必要があるテスト中はそうです。このようなテスト中に、結果をファイルに記録して、検査のためにこのコメントをキャプチャすることがよくあります。 C:> [ourcommand] >log.txt アプリケーションが最後まで実行されると、これはうまく機能します。
アプリケーションがクラッシュした場合 (不正なメモリ参照など)、Windows はログ ファイルをコメンタリーの末尾の前で切り捨ててしまうので、クラッシュの時点で何が起こっていたのかわかりません。また、同じ場所でコンソール出力をチョップします。そのため、切り捨てられたログ ファイルを取得した場合、最終的な回答を確認するには、ログ ファイルを使用せずにすべてをやり直す必要があります。ログを記録しない場合、Windows はコンソール出力をバッファリングしないようです。
ログ中にコンソール出力をバッファリングしないように Windows に指示する方法はありますか? 私たちのアプリケーションは (Windows) C ランタイム システムを使用しており、しばらく前に次のように "setvbuf" を使用しました。しかし、役に立たない。