Import sun. misc. signal; <br/> import sun. misc. signalhandler; </P> <p>/*** <br/> * Java Signal Processing demo <br/> * @ author jiang_qh <br/> */< br/> public class signalhandlerexample implements signalhandler {</P> <p> private signalhandler oldhandler; </P> <p> Public void handle (signal) {<br/> system. out. println ("signal handler called for signal" <br/> + signal); <br/> try {</P> <p> signalaction (signal ); </P> <p> // Chain back to previous handler, if one exists <br/> If (oldhandler! = Sig_dfl & oldhandler! = Sig_ign) {<br/> oldhandler. handle (signal); <br/>}</P> <p >}catch (exception e) {<br/> system. out. println ("handle | signal handler" <br/> + "failed, reason" + E. getmessage (); <br/> E. printstacktrace (); <br/>}</P> <p> Public void signalaction (signal) {</P> <p> system. out. println ("handling" + signal. getname (); <br/> system. out. println ("just sleep for 5 seconds. "); <br/> try {<br/> thread. sleep (5000); <br/>} catch (interruptedexception e) {<br/> system. out. println ("interrupted:" <br/> + E. getmessage (); <br/>}</P> <p> Public static signalhandler install (string signalname) {<br/> signal diagsignal = new signal (signalname); <br/> signalhandlerexample instance = new signalhandlerexample (); <br/> instance. oldhandler = signal. handle (diagsignal, instance); <br/> return instance; <br/>}</P> <p> Public static void main (string [] ARGs) {</P> <p> // kill command <br/> signalhandlerexample. install ("term"); <br/> // Ctrl + C command </P> <p> signalhandlerexample. install ("int"); </P> <p> system. out. println ("signal handling example. "); <br/> try {<br/> thread. sleep (50000); <br/>} catch (interruptedexception e) {<br/> system. out. println ("interrupted:" + E. getmessage (); <br/>}</P> <p >}< br/>
Run the program on Linux. Then kill its PID and print:
Signal Handling example.
Signal handler called for signal sigterm
Handling term
Just sleep for 5 seconds.
[Dispatch @ localhost thirdtest] $ sh signal. Sh
Signal Handling example.
Signal handler called for signal sigterm
Handling term
Just sleep for 5 seconds.