0
我正在研究由Java编写的linux守护进程。如果当前用户注销,我需要捕获信号并将消息发送到远程服务器。如何在Java代码中捕获当前用户注销信号?信号SIGHUP可以工作吗?任何人都可以提供一些线索?如何在Java守护进程中捕获Linux用户注销信号?
非常感谢。
我正在研究由Java编写的linux守护进程。如果当前用户注销,我需要捕获信号并将消息发送到远程服务器。如何在Java代码中捕获当前用户注销信号?信号SIGHUP可以工作吗?任何人都可以提供一些线索?如何在Java守护进程中捕获Linux用户注销信号?
非常感谢。
您可以注册一个信号处理程序来处理SIGHUP。
import sun.misc.Signal;
import sun.misc.SignalHandler;
public class SigHupDemo {
public static void main(String[] args) throws Exception {
// you can also register for "TERM" - SIGTERM
Signal.handle(new Signal("HUP"), new SignalHandler() {
public void handle(Signal sig) {
System.out.println("got a SIGHUP");
// do what you want to do in such case
// also include to end your daemon
}
});
for(int i=0; i<100; i++) {
Thread.sleep(1000);
System.out.print('.');
}
}
}
要测试你可以在会话1运行这种方式
java SigHupDemo
输出在发送SIGHUP之后,在会话1中将会是这样的:
....got a SIGHUP
...
如果JVM收到SIGHUP
,演示将只打印got a SIGHUP
。正如代码中提到的那样,您需要在那里实现自己的适当处理。
你想处理SIGQUIT吗?如果用户关闭退出他的sessioin退出?以下我的解决方案不起作用。 – SubOptimal 2015-03-25 11:24:21