2016-06-23 2 views
0

inheritIOを使って他のプロセスを生成するJavaプロセスでstdoutに書き込まれるものを読みたい。 redirectOutはプロセスを開始するコードを制御できないため使用できません。また、リセットSystem.setOutがこの場合を動作しないことに注意してください。 また、Processオブジェクトへのアクセス権もありません。他の人が標準化するために書いたものを読む

例:定義により

new ProcessBuilder().command('/bin/echo', 'FooBar').inheritIO.start 
// read 'FooBar' from standard out 

答えて

1

、inheritIOは、サブプロセスの出力は、呼び出し元の出力の同じさせます。したがって、ProcessBuilderで呼び出した直後に、呼び出したプロセスは、は、呼び出し先の標準出力もエラーストリームも読み取ることができません。

あなたはそれを変更できないと言いますが、私が想像できる唯一の方法は、出力をパイプ(ProcessBuilderのデフォルト)にリダイレクトする外部ランチャーを使用し、あなたが示した行を含むプログラムを開始します(new ProcessBuilder().command('/bin/echo', 'FooBar').inheritIO.start )、その出力を処理します。

関連する問題