2

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

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

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

taskkill /IM program.exe

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

编辑:

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

4

2 回答 2

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()
于 2014-01-23T13:46:31.593 回答
1

你可以做:

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

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

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

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

这与您在 unix 中killvs 和kill -9.

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

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

于 2014-01-23T14:31:20.490 回答