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 回答