Java - 从进程输出中读取的问题

时间:2015-06-15 13:47:54

标签: java process

我的操作系统是Windows 8.1 64位 我需要读取进程输出,但是如果它工作超过5个小时,我应该销毁进程。因此,有两种方式:1)过程工作< 5个小时,它自己结束; 2)如果工作> = 5小时,在那之后我将其销毁。我有两个变种:

1

ProcessBuilder pb = new ProcessBuilder(corePath.getAbsolutePath(), ... );
Process core = pb.start();
if(!core.waitFor(5, TimeUnit.HOURS))
{
    System.out.println("Process destroyed, path " + root.getAbsolutePath());
    core.destroy();
}
String output = IOUtils.toString(core.getInputStream());
return output;

2

Process core = pb.start();
StringBuilder sb = new StringBuilder();
BufferedReader input = new BufferedReader(new InputStreamReader(core.getInputStream()));
String line;
while(System.currentTimeMillis() < end && (line = input.readLine()) != null)
{
    sb.append(line);
}
input.close();

问题: 1)程序正好等待5个小时(即使过程应在几秒钟内完成) 2)程序正在等待,直到过程结束

有人可能会建议另一种方法来处理这个问题吗?感谢

1 个答案:

答案 0 :(得分:2)

我认为问题可能出在BufferedReader上。您是否尝试使用BufferedReader获取inptut?如果是这样,请使用Scanner类。