在Java中,我使用Process在shell上触发一个命令,在触发该命令之后,我想知道它的进度是否完成。如果被调用的进程花费了太多的时间,我想在一定的时间限制后终止该进程。例如,如果进程执行时间超过5秒,我希望杀死该后端进程,如果它在5秒内完成,我希望继续使用该后端进程的输出。在python中,有一个类变量名为kill,它最初为null,然后在进程完成执行后得到0,我可以继续检查这个值,如果它在5秒后为null,我可以简单地终止该进程。我如何在Java中做同样的事情呢?
发布于 2013-09-29 07:00:33
方法Process#exitValue()在进程尚未终止时抛出异常。
您可以启动该进程,休眠5秒并调用exitValue()。如果得到IllegalThreadStateException,这意味着进程仍在运行,您可以使用destroy()方法杀死它:
Process p = ...
try {
Thread.sleep(5 * 1000);
int exitValue = p.exitValue();
// get the process results here
} catch (IllegalThreadStateException e) {
// process hasn't terminated in 5 sec
p.destroy();
}https://stackoverflow.com/questions/19075273
复制相似问题