我的代码如下。我正在尝试运行我的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机器。
答案 0 :(得分:0)
您需要关闭进程的输出流(其标准输入),您应该合并输出和错误流。你可能认为你不想要它们,但你可能错了,如果进程产生足够的未读错误输出,它将停止。