0

私は以下のコードを持っています。Ruby スクリプトを実行して標準出力を取得しようとしていますが、この場合、標準エラーは必要ありません。何らかの理由で、実稼働ホストでまったく出力を取得できず、空の文字列しか取得できませんでした。私のデスクトップでも同じコードが正常に動作します。Ruby スクリプトを自分で実行すると、そこから出力が得られます。私の ruby​​ スクリプトには、今のところ puts ステートメントしかありません。誰でも理由を知っていますか?Rubyスクリプトが終了するのを待つために、ある種のブロックが必要ですか?

ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("ruby", "tests.rb");
Process process = processBuilder.start();

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

StringBuilder output = new StringBuilder();
String line;

while ((line = bufferReader.readLine()) != null) {
    System.out.println("Line is: " + line);
    output.append(line + "\n");
}

bufferReader.close();
return output.toString();

zshを実行しているredhatマシンがあります。

4

1 に答える 1

0

プロセスの出力ストリーム (その標準入力) を閉じる必要があり、おそらく出力ストリームとエラー ストリームをマージする必要があります。両方とも必要ないと考えるかもしれませんが、間違っている可能性があります。プロセスが未読のエラー出力を十分に生成すると、処理が停止します。

于 2013-02-27T23:38:37.083 に答える