【发布时间】:2014-09-08 06:16:45
【问题描述】:
我正在用 java 编写一个程序,它可以启动应用程序,例如 firefox。
编辑:这个程序适用于 linux,特别是 ubuntu。
启动程序很容易:
Runtime.getRuntime().exec("/usr/bin/firefox");
但是,我想在窗口完全打开或运行后从窗口中检索详细信息。
目前我只是在打电话:
Thread.sleep(delay);
确保窗口已准备就绪,但这是一个糟糕的解决方案。不同的窗口需要不同的延迟是个问题。
凌乱。
所以我的问题是,当 Firefox(或任何其他外部应用程序)完全设置时,有什么方法可以通知我?我不认为我可以使用 Process.waitFor() 因为在 firefox 关闭之前进程不会完成。
提前致谢!
更新:Process.waitFor() 不起作用。我已经尝试过了,它只在 Firefox 关闭时返回,而不是在完全设置时返回。只是对于任何自己尝试的人来说,如果另一个 Firefox 窗口已经打开,它将起作用(起初这把我愚弄了)但如果没有现有的窗口,它就不会!
【问题讨论】:
-
我不知道如何在 linux 上做到这一点,在 windows 上,我们必须检查与该程序关联的窗口是否打开(通过 JNI)。在 linux 中,我只知道正在运行、等待或睡眠、已停止和僵尸的进程状态,然后没有一个拥有你想要的信息。也许你必须像我们在 Windows 上那样使用一些 API。
标签: java linux runtime.exec external-application