首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何了解在Java中使用process / Runtime调用的流程是否已完成其执行

如何了解在Java中使用process / Runtime调用的流程是否已完成其执行
EN

Stack Overflow用户
提问于 2013-09-29 06:47:59
回答 1查看 2.3K关注 0票数 3

在Java中,我使用Process在shell上触发一个命令,在触发该命令之后,我想知道它的进度是否完成。如果被调用的进程花费了太多的时间,我想在一定的时间限制后终止该进程。例如,如果进程执行时间超过5秒,我希望杀死该后端进程,如果它在5秒内完成,我希望继续使用该后端进程的输出。在python中,有一个类变量名为kill,它最初为null,然后在进程完成执行后得到0,我可以继续检查这个值,如果它在5秒后为null,我可以简单地终止该进程。我如何在Java中做同样的事情呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-29 07:00:33

方法Process#exitValue()在进程尚未终止时抛出异常。

您可以启动该进程,休眠5秒并调用exitValue()。如果得到IllegalThreadStateException,这意味着进程仍在运行,您可以使用destroy()方法杀死它:

代码语言:javascript
复制
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();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19075273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档