【发布时间】:2016-10-17 16:47:04
【问题描述】:
通常我使用这段代码来运行一个 bash 脚本并得到它的输出
ProcessBuilder pb = new ProcessBuilder("/home/myscript");
Process p = pb.start();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
String inputRead;
p.waitFor();
while((inputRead=stdInput.readLine()) != null){
Helper.log(inputRead);
}
这工作正常,但这次我使用的 bash 脚本没有终止。它始终处于活动状态,当它检测到某些东西时,它会打印出来。我想启动脚本,等待一段时间,然后检查它是否检测到了什么。
我试过这段代码
Thread.sleep(5000);
p.destroy();
String inputRead;
while((inputRead=stdInput.readLine()) != null){
Helper.log(inputRead);
}
但我得到了结果
java.io.IOException: 流关闭
我也试过了
p.waitFor(5, TimeUnit.SECONDS);
while((inputRead=stdInput.readLine()) != null){
Helper.log(inputRead);
}
但是这个过程从未结束,我仍然永远在日志中得到输入。
我只想运行脚本一小段时间,在本例中为 5 秒,然后停止它并获取脚本在此期间生成的输出。
【问题讨论】:
标签: java processbuilder