Linuxサーバー上でコマンドラインツールとして使用される一連のJavaプログラムがあります。それらのほとんどは、PerlのTerm::ProgressBar
と同様に、STDERRのプログレスバーを表示するクラスを使用します。STDERRがターミナルに向かうかどうかの判断
STDERRがターミナルに行くたびにプログレスバーを表示し、STDERRがリダイレクトされたときに自動的に無効にして、リダイレクトされたデータにすべての種類のプログレスバーがないようにしたいと思います。
System.console() == null
をチェックするのは私の最初の考えですが、STDOUTがまだ端末に向いていても、このtrue
にするにはSTDOUTをリダイレクトするだけで十分です。 STDERRに固有のことを確認できるものはありますか? Linux固有の、またはネイティブAPIを使用するソリューションは、私のニーズには問題ありません。
http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream お楽しみ – UberDoyle
@UberDoyle I:
Makefile
(変更のJavaは、あなたの$JAVA_HOME
反映するために含まれます) Javaを使用して別のプロセスを起動することを求めていません。 *現在のプロセスのSTDERRがリダイレクトされているかどうかを知りたい。 –