如何在不强制的情况下杀死Java中的进程?

A J*_*son 3 java

我有一个运行许多其他程序的Java程序.一旦用户完成,他们就有一个按钮来杀死所有进程,这应该会杀死所有正在运行的东西,但它应该强制执行它们.这些其他进程中的至少一个也是用Java编写的,并且具有许多关闭挂钩,因为它在退出时自动保存首选项文件并杀死它自己启动的进程,例如.

    Runtime.getRuntime().addShutdownHook(new Thread() {
      public void run() {
        if (process != null)
            process.destroy();
      }
    }
Run Code Online (Sandbox Code Playgroud)

当主进程调用destroy时,上面的代码不会在子进程上运行.无论如何,我可以终止进程,这样仍然可以运行吗?

我从Perl移植它会杀死它(9,@ kill_process);

谢谢.

Pow*_*ord 6

杀死信号9(SIGKILL)告诉操作系统终止进程.该过程事先没有得到通知,因为它会发生这种情况并且无法进行任何清理.

process.destroy()相当于Perl kill(9,@kill_process);,你的旧进程也不会进行任何清理.

杀死信号15(SIGTERM)将告诉进程自杀.