首先,我搜索了这个问题,我似乎得到的唯一答案是使用System.exit(0);
这不是我想要的。目前我正在使用
Runtime runtime = Runtime.getRuntime();
runtime.exec("C:\\Program Files\\program folder\\program.exe");
这成功打开了程序。然而关闭程序看起来像一个完全不同的鱼。由于权限和安全性,是否可以通过java关闭程序?也可以使用运行时来完成,还是这个更复杂的问题?我可以看到只有Windows的解决方案才能使用
taskkill /IM program.exe
但是我的问题是,如果我发起了一个taskkill会立即关闭程序吗?还是会告诉程序开始启动关机过程?
编辑:
我会建议将要启动的程序将处理访问数据库
答案 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。
如果您的信号程序能够遵守并尝试关闭打开的连接并终止,则取决于程序本身。