我的操作系统是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)程序正在等待,直到过程结束
有人可能会建议另一种方法来处理这个问题吗?感谢