1

Windows と UNIX で動作する C++ アプリケーション (コンソール) があります。このアプリケーションは、出力ファイルを使用して、システム コール/印刷/その他の詳細なログ ファイルを出力しました。問題は、新しい機能が追加された後に信号 11/2 を受け取る場合があることです。

シグナル 11 が発生したときに出力ファイルが適切に閉じられないため、これが発生するたびに、バグ/問題の原因を追跡するための「ほぼ完全な」情報がログ ファイルから取得されません。(部分的またはサイズがゼロです)

fprintf 行の出力ごとにフラッシュ コマンドを追加することを検討しました。Q:

  1. それは良い実践と見なされますか?
  2. fflush は Windows プラットフォームでうまく動作しますか?
  3. システムが予期せずクラッシュする可能性がある間、ログファイルを保持するための考え/その他の方法はありますか?
4

1 に答える 1

1

ログ データをファイルに送信するのではなく、30 分で作成できる外部ログ アプリケーションに送信する必要があります。出力の送信は、ソケットまたはパイプを介して、または SendMessage() Windows API を使用して可能です ( Windows を対象とする場合)。

于 2010-08-22T13:22:09.660 に答える