如何知道用户何时关闭用Java中的exec()执行的程序

时间:2015-12-01 17:37:44

标签: java process exec

我使用exec()在Java中启动VLC:

Process process = Runtime.getRuntime().exec("/usr/bin/vlc -");

如何知道VLC窗口关闭的时间? 我知道exitValue()返回进程的退出值。如果进程尚未完成,则返回IllegalThreadStateException。 所以我想我可以有一个带有try / catch的while循环来继续检查exitValue()是否抛出异常,当它没有时,它意味着该进程已经完成。但这似乎浪费了CPU时间。

2 个答案:

答案 0 :(得分:3)

您可以使用waitFor()对象的Process方法(https://docs.oracle.com/javase/8/docs/api/java/lang/Process.html#waitFor--

Process process = Runtime.getRuntime().exec("/usr/bin/vlc -");
int exitCode;
try {
   exitCode = process.waitFor();
} catch(InterruptedException e) {
}

这将使您当前的线程等待进程终止(没有繁忙等待= CPU友好),或直到它被中断。

答案 1 :(得分:2)

您可以使用Process.waitFor()等待执行的进程完成。

请参阅:

http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#waitFor%28%29