Java终止程序

时间:2014-01-23 13:42:37

标签: java application-shutdown

首先,我搜索了这个问题,我似乎得到的唯一答案是使用System.exit(0);这不是我想要的。目前我正在使用

打开一个程序
Runtime runtime = Runtime.getRuntime();
runtime.exec("C:\\Program Files\\program folder\\program.exe");

这成功打开了程序。然而关闭程序看起来像一个完全不同的鱼。由于权限和安全性,是否可以通过java关闭程序?也可以使用运行时来完成,还是这个更复杂的问题?我可以看到只有Windows的解决方案才能使用

taskkill /IM program.exe

但是我的问题是,如果我发起了一个taskkill会立即关闭程序吗?还是会告诉程序开始启动关机过程?

编辑:

我会建议将要启动的程序将处理访问数据库

2 个答案:

答案 0 :(得分:4)

执行runtime.exec时会返回进程。在该流程实例上,有一个destroy方法:

http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

Runtime runtime = Runtime.getRuntime();
Process p  = runtime.exec("C:\\Program Files\\program folder\\program.exe");
p.destroy()

答案 1 :(得分:1)

你可以这样做:

Process p2  = runtime.exec("c:\\windows\\system32\\taskkill /IM program.exe")

它是标准的杀戮而不是强制的(需要/ F),因此它只会通知程序它应该自发终止。

我无法尝试使用您的程序,但是我打开记事本键入了一些文本,在保存之前,我用这种方式终止它,记事本问我是否要保存我的工作。

使用/ F选项记事本立即终止,文件保持未保存状态。

这与kill vs与kill -9之间的unix相同。

请注意,这将终止您处理的所有实例,否则您应该使用pid。

如果您的信号程序能够遵守并尝试关闭打开的连接并终止,则取决于程序本身。