Java进程终止 - onEnd()?

时间:2018-02-06 02:54:04

标签: java linux unix process pid

当您通过PID强制终止进程时:

kill -9 1123

当进程终止时是否有任何方法被调用,直到关闭为止?

2 个答案:

答案 0 :(得分:2)

对于java,您可以向进程添加ShutdownHook,当sigterm发送到此进程时,ShutdownHook中的代码将在jvm自行关闭之前执行。

    Runtime.getRuntime().addShutdownHook(new Thread() {
        @Override
        public void run() {
            //your cleanup codes
        }
    });

答案 1 :(得分:1)

查看链接以检查两个信号之间的差异以及如何捕获它们等等。

简而言之,sigterm允许进程在结束前清理他的东西(他的遗嘱),但是sigkill没有,并且不能被你的应用程序困住! (假设程序永远运行且不可阻挡,这将是一团糟)

附加读物:

Why I am not getting signal SIGKILL on kill -9 command in bash?

https://major.io/2010/03/18/sigterm-vs-sigkill/

http://www.learnlinux.org.za/courses/build/shell-scripting/ch12s03.html