在不使用JNI的情况下,在java中捕获kill信号的最佳方法是什么.我确实发现了sun.misc.Signal和sun.misc.SignalHandler以及在将来的版本中被删除的可能性的警告.
使用JNI调用ac lib是我唯一的选择吗?
我有一个java程序,它创建一个锁文件,以确保没有其他执行同时运行.如果程序运行,则会创建该文件,退出时,无论是成功还是异常,都会删除该文件.但是,如果用户按Ctrl + C,关闭终端,或以其他方式中断执行,则不会删除该文件.有没有办法检测此中断命令并确保在这种情况下也删除该文件?
我正在使用自定义信号处理程序来捕获自定义java守护程序中的TERM,ABRT和INT信号.我在代码中有这个处理程序,以便我可以向它发送TERM信号并通过kill命令正常关闭程序.信号处理程序现在正常工作,但是当我编译代码时,我收到以下警告(多次):
警告:sun.misc.SignalHandler是Sun专有API,可能会在将来的版本中删除
使用这些类时:
import sun.misc.SignalHandler;
import sun.misc.Signal;
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法将信号发送到正在运行的JVM以启动主线程的关闭?我不希望将我的代码绑定到此API,以便将来删除它.
此代码现在使用1.5.0_22 JVM在Solaris和HPUX上运行.任何帮助或建议将不胜感激.我使用IBM的这个文档来开发信号处理程序:
http://www.ibm.com/developerworks/java/library/i-signalhandling/