- Java 에서 시그널 처리하기(Windows)
- 日常茶飯事
- 2011. 1. 25. 01:11
Windows 환경에서는 제약사항이 있다.
- TERM, ABRT, ILL, SEGV 는 Windows 운영체제에서 발생되지 않는다.
- BREAK, FPE 도 사용할 수 없다.
- QUIT 도 사용할 수 없다.
- MSDN signal
import sun.misc.Signal; import sun.misc.SignalHandler; public class SignalHandlerImpl { public static void main(String[] args) throws InterruptedException { System.out.println("start"); SignalHandler signalHandler = new SignalHandler() { @Override public void handle(Signal signal) { System.out.println("signal.name : " + signal.getName() + ", signal.number : " + signal.getNumber()); } }; Signal.handle(new Signal("INT"), signalHandler); //Ctrl-C Signal.handle(new Signal("TERM"), signalHandler); Signal.raise(new Signal("TERM")); Thread.sleep(1000 * 60); System.out.println("end"); } }
> java SignalHandlerImpl
start
signal.name : TERM, signal.number : 15 //Signal.raise() 로 발생시킴.
Ctrl - C
signal.name : INT, signal.number : 2
end
start
signal.name : TERM, signal.number : 15 //Signal.raise() 로 발생시킴.
Ctrl - C
signal.name : INT, signal.number : 2
end
- TERM, ABRT, ILL, SEGV 는 Windows 운영체제에서 발생되지 않는다.
- BREAK, FPE 도 사용할 수 없다.
Signal already used by VM: SIGBREAK
- QUIT 도 사용할 수 없다.
Unknown signal: QUIT
- MSDN signal
Recent comment