我使用exec()在Java中启动VLC:
Process process = Runtime.getRuntime().exec("/usr/bin/vlc -");
如何知道VLC窗口关闭的时间? 我知道exitValue()返回进程的退出值。如果进程尚未完成,则返回IllegalThreadStateException。 所以我想我可以有一个带有try / catch的while循环来继续检查exitValue()是否抛出异常,当它没有时,它意味着该进程已经完成。但这似乎浪费了CPU时间。
答案 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