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

标签 java process exec

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

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

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

最佳答案

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

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

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

关于java - 如何知道用户何时关闭 Java 中使用 exec() 执行的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34026557/

相关文章:

PHP 'exec' 命令不能与 'awk' 命令一起正常工作

C - execlp 函数调用 - 我可以让 argv 指向更多参数吗

java - 从 JSP 页面中的 HashMap 获取 URL 值(使用 Struts2)

c - 如何确保父进程先于子进程执行scanf()?

java - 如何在 Java 中启用启用 SecurityManager 的情况下创建 newInstance

python - python 中的多终端处理

java - 使用 java 的 Process.exec 启动的进程始终返回退出代码 0

c - 为什么 execlp 不允许我使用管道?

java - 魔方模拟器的问题

java - 注解Spring @Controller也作为Bean?