我的应用程序启动本地Windows应用程序,例如使用JVM Runtime的Calculator。
我正在关注http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html
中的示例和教程当我使用类似shell命令的dir-时,我的应用程序成功终止。但是,当我启动时,例如一个计算器,我的应用程序只在我退出计算器后终止。 如何将启动的应用程序与JVM分离?
这是我的代码:
Runtime rt = Runtime.getRuntime();
System.out.println("Execing " + cmd[0] + " " + cmd[1]
+ " " + cmd[2]);
Process proc = rt.exec(cmd);
// any error message?
StreamGobbler errorGobbler = new
StreamGobbler(proc.getErrorStream(), "ERROR");
// any output?
StreamGobbler outputGobbler = new
StreamGobbler(proc.getInputStream(), "OUTPUT");
// kick them off
errorGobbler.start();
outputGobbler.start();
// any error???
int exitVal = proc.waitFor();
System.out.println("ExitValue: " + exitVal);
有什么建议吗?
答案 0 :(得分:0)
您使用等待进程终止的proc.waitFor()
。这就是为什么您的应用程序仅在启动的应用程序终止后终止的原因。
为什么要立即终止Java应用程序?通常,等待进程终止没有任何问题。否则,您无法获得子进程的退出值。