我正在用 java 编写一个程序,它可以启动诸如 firefox 之类的应用程序。
编辑:此程序适用于 linux,特别是 ubuntu。
启动程序很简单:
Runtime.getRuntime().exec("/usr/bin/firefox");
但是,我想在窗口完全打开或运行后从中检索详细信息。
此刻我正在打电话:
Thread.sleep(delay);
确保窗口准备就绪,但这是一个糟糕的解决方案。不同的窗口需要不同的延迟是一个问题。
凌乱。
所以我的问题是,当 firefox(或与此相关的任何其他外部应用程序)完全设置时,有什么方法可以通知我吗?我不认为我可以使用 Process.waitFor() 因为在 firefox 关闭之前进程不会完成。
提前致谢!
更新:Process.waitFor() 不起作用。我试过了,它只在 firefox 关闭时返回,而不是在完全设置时返回。对于任何自己尝试过的人来说,如果另一个 firefox 窗口已经打开,它就可以工作(一开始我被骗了)但如果没有现有的窗口,它就不会!
最佳答案
您可以使用 Process#waitFor
等待命令执行,然后检查 exitValue
,如下所示:
Process p = Runtime.getRuntime().exec("/usr/bin/firefox");
p.waitFor();
if(p.exitValue()==0) {
//success
} else {
// fail read error stream or out stream for possible causes
}
关于java - 在外部应用程序完全运行时获取通知 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802470/