java - 如何从关闭挂钩中以非零退出代码退出?
问题描述
我有一个 javaagent 在应用程序运行时收集某些信息。它还注册了一个关闭钩子,在应用程序退出时将收集的数据与一些黄金数据进行比较,如果比较失败,预计将以非零退出状态退出。
但是,我无法执行此操作,因为调用 System.exit(exitStatus) 似乎会强制应用程序陷入死锁。
有没有办法以非零退出状态从关闭挂钩中退出
我也尝试使用 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());
}
}
解决方案
推荐阅读
- python - 在python中获取保守区域
- download - 下载在 Edge 浏览器中显示为有害
- angular - 在不使用 sendEmailVerification 方法的情况下,在 Firebase 中使用 AuthProvider 连接时自动验证用户电子邮件?
- r - 如何使用方法='黄土'和公式'y〜x'关闭消息“`geom_smooth()`”
- html - 如何用 CSS 中的图像和导航解决这个问题
- c++ - Using #ifdef preprocessor around virtual functions causes runtime error in program linked against libraries
- java - Spring Webflux 2.5.x + Spring Cloud + Zipkin:无法获取 Zipkin 指标
- python - VS Code:如何通过launch.json中的shell命令获取进程ID?
- javascript - 承诺链不会等到其他承诺解决
- c - 我可以找到 Mac 线程中当前使用了多少堆栈内存吗?