ここに私の問題の抜粋コードがあります:
Process process = Runtime.getRuntime().exec(command);
if (process.waitFor() != 0)
throw new Exception("error");
reader =
new BufferedReader(new InputStreamReader(process.getInputStream()));
実行中のプロセスは、膨大な出力を生成しています。出力をファイルにリダイレクトすると、プロセスはより速く終了し、出力を画面に出力します(標準出力)。ディスクのパフォーマンスが低い、ファイルシステムのアクセス許可などが原因で、出力をファイルにリダイレクトしたくありません。
process.waitFor() が実行されると、プロセス (呼び出し先) が終了するまで Java がブロックされ、長い時間がかかることがあります。したがって、この問題を回避するために、プロセスの標準出力をリーダーのストリーム入力 (コードの最後の行) にリダイレクトしたいと思います。つまり、呼び出し先は、出力を画面に出力する代わりに、リーダーにリンクされたストリームに出力を生成する必要があります。
私が十分に明確だったことを願っています。どうすればそれができるのだろうか?どんな援助も素晴らしいでしょう。