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