Java运行进程无法标准化

时间:2013-02-27 23:36:11

标签: java process

我的代码如下。我正在尝试运行我的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机器。

1 个答案:

答案 0 :(得分:0)

您需要关闭进程的输出流(其标准输入),您应该合并输出和错误流。你可能认为你不想要它们,但你可能错了,如果进程产生足够的未读错误输出,它将停止。