【发布时间】:2013-01-21 13:31:01
【问题描述】:
try {
String str;
Process process = Runtime.getRuntime().exec("bash /home/abhishek/workspace/Pro/run");
InputStream isout = process.getInputStream();
InputStreamReader isoutr = new InputStreamReader(isout);
BufferedReader brout = new BufferedReader(isoutr);
while ((str = brout.readLine()) != null) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
}
代码在从流程中获取 InputStream 时存在问题, 因为如果我从终端运行 Shell 脚本,它运行得非常好, 但如果我这样运行脚本,str 总是为空,
我正在使用此代码将 Shell 脚本的输出直接获取到 Java 中,而不是将脚本输出写入文件中
有没有其他方法可以实现这一点,或者如何使用当前方法解决问题
【问题讨论】:
-
好问题,但很难。它与总是很痛苦的 IO 阻塞有关。但是,有一个名为 akka (akka.io) 的库声称可以克服此类 IO 阻塞问题。我已经开始学习它了,我不得不承认它也有它的局限性......
-
您确定脚本打印到标准输出而不是标准错误吗?
-
process.getErrorStream() 是否有任何返回?
标签: java linux shell runtime bufferedreader