我正在编写一个调用System.exit()的java库的C接口。我打电话给:
/* Calls the main method for the class */
printf("about to call main\n");
(*env)->CallStaticVoidMethod(env, mainClass, mainMethod, args);
printf("returning from main\n");
我(很遗憾)没有更改库的选项,但我仍然希望JVM将控制权返回给C调用函数(所以我可以做各种清理任务等等)。有没有办法让JNI这样做,或者我是SOL?
谢谢,
答案 0 :(得分:8)
对于这么简单的情况你不需要字节码编辑,在好的旧java中实现了很多安全处理。
System.setSecurityManager(SecurityManager)
在checkExit()
中抛出一些错误(如ThreadDeath)并假设在同一个线程中调用System.exit(int)
[erm Runtime.getRuntime().exit(int)
],它应该这样做。