GUIアプリケーションの警告メッセージをstd :: cerrに送信する必要がありますか?

c++ stderr stdout warnings
GUIアプリケーションの警告メッセージをstd :: cerrに送信する必要がありますか?
Unix GUIアプリケーションの警告をstd

cerrまたはstd :: coutに送信する必要がありますか?

これは、通常GUIがコンソールウィンドウに警告とエラーを表示し、それらをログファイルに送信することを前提としています。 しかし、コンソールが見つからないため使用できない場合は、std

cerr、std :: cout、またはstd :: clogをそのようなメッセージに使用する必要がありますか?

私はstd

cerrが彼らが属する場所だと考えています。

  3  0


ベストアンサー

「cerr」が好きです。 ユーザーが出力をパイプするか、ファイルに送信する場合、ユーザーは `cerr`をオプトアウトできます。

tool 2>/dev/null >output

しかし、すべてを1つのストリームに入れると、SOLのままになります。

また、「cerr」はバッファリングされていないため、クラッシュや書き込みがどれほど激しくてもエラーメッセージが表示されることが保証されています。 そして、ユーザーが上記の `/ dev / null`を別のものに置き換えた場合、エラーとともに警告をパイプする必要があります…​それが明確な引数であるかどうかはわかりません。

6


あなたのプログラムが適切にフォーマットされた出力を持つように設計されていて、それが別のプログラムにパイプされるか、解析される場合、警告を `std

cerr`にリダイレクトする必要があります。

4


コンパイラの場合、コンパイル中のコードに関するエラーメッセージは「通常の」出力であるため、stderrではなくstdoutに書き込む必要があります。 stderrに書き込まれるべきメッセージは、コンパイラ自体の実行エラーに関するものだけです(たとえば、コンパイラの一部を構成するファイルが見つからないため、コンパイラが実行できなかった場合)。

同じ基本的なガイドラインが他のほとんどのプログラムに適用されます。問題の「メッセージ」がそのプログラムの「標準」出力の一部であり、ユーザーが通常、出力をリダイレクトするとき/リダイレクトする場合に含まれることを期待する場合、標準出力に書き込まれます。 標準エラーは、ファイルにリダイレクトされた標準出力がある場合でも、ユーザーが通常見たい/必要とするメッセージを対象としています-主にプログラムを実行できなかったため、出力がない、または出力がある場合不完全または無効である可能性があります。

1


Windowsでは、std

cerrもstd :: coutもGUIプログラムからは指示されず、空の大きなバケツに移動します。 ただし、* nixベースのシステムについて話していると思います。

1


タイトルとURLをコピーしました