我有一个运行许多其他程序的Java程序.一旦用户完成,他们就有一个按钮来杀死所有进程,这应该会杀死所有正在运行的东西,但它应该强制执行它们.这些其他进程中的至少一个也是用Java编写的,并且具有许多关闭挂钩,因为它在退出时自动保存首选项文件并杀死它自己启动的进程,例如.
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
if (process != null)
process.destroy();
}
}
当主进程调用destroy时,上面的代码不会在子进程上运行.无论如何,我可以终止进程,这样仍然可以运行吗?
我从Perl移植它会杀死它(9,@ kill_process);
谢谢.
解决方法:
杀死信号9(SIGKILL)告诉操作系统终止进程.该过程事先没有得到通知,因为它会发生这种情况并且无法进行任何清理.
process.destroy()相当于Perl的kill(9,@ kill_process);,你的旧进程也不会进行任何清理.
杀死信号15(SIGTERM)将告诉进程自杀.
标签:java
来源: https://codeday.me/bug/20190726/1547643.html