如何使用非零退出代码从关闭挂钩中退出?

时间:2019-04-08 09:18:51

标签: java javaagents shutdown-hook exitstatus

我有一个Javaagent,可在应用程序运行时收集某些信息。它还会注册一个关闭钩子,在应用程序退出时,该钩子会将收集到的数据与一些黄金数据进行比较,如果比较失败,则期望退出状态为非零。

但是,我无法执行此操作,因为调用System.exit(exitStatus)似乎迫使应用陷入僵局。

有没有一种方法可以退出状态为非零的退出状态 SHUTDOWN HOOK

我也尝试使用java.lang.Runtime.halt(exitStatus),但似乎无济于事。 回声$?似乎总是表明退出状态为0

我的应用代码

public class Sample {
    public static void main(String args[]) {
        System.out.println("My code");
    }
}

我的经纪人代码:

import java.lang.instrument.Instrumentation;
class CompareDataAtTheTimeOfExit extends Thread {
    @Override
    public void run() {
        // If comparison fails exit with 5
    }
}
class Agent {
    public static void premain(String args, Instrumentation inst) throws Exception {
        Runtime r = Runtime.getRuntime();
        r.addShutdownHook(new CompareDataAtTheTimeOfExit());
    }
}

0 个答案:

没有答案