パイプがstdoutを取得できない

パイプがstdoutを取得できない

Bash端末でJavaプログラムを実行していて、OS X 10.8そのプログラムが生成する出力をリダイレクトしようとしています。

ただし、パイプを介して実行したりファイルにリダイレクトしたりすると、出力は空になりますが、端末には出力が表示されます。

この点を説明するには、次のようにします。

> java program.java
13/10/02 14:18:30 WARN some
13/10/02 14:18:30 INFO log
13/10/02 14:18:30 INFO messages
...

> java program.java > log
> cat log
>

stdout別のストリームに書き込むようにJavaプログラムを設定しましたが、まだ端末から出力を生成することは可能ですか?そのようなことは可能ですか?

答え1

持つサム各プログラムの標準ファイルstdin(標準入力)、stdout(標準出力)、stderr(標準エラー)を開きます。デフォルトでは、両方とも端末に作成されstdout出力されます。stderr

stderrログやエラーメッセージが実際のプログラム出力と混在しないように、代わりにエラーとログメッセージを作成するのがstdout一般的なルールです。次のstderrリダイレクトを使用できます2>

command 2> log

関連情報