[ java ] in KIDS 글 쓴 이(By): Darkness () 날 짜 (Date): 2000년 8월 16일 수요일 오후 07시 03분 43초 제 목(Title): Linux에서 Signal Handling 리눅스에서 Signal Handling이 가능한가요?? 자바로 서버 프로그램을 하나 짰는데요... 이 서버를 죽일때 꼭 해야 할 일이 있거든요... 즉, kill -9 java프로그램pid 하면 서버가 죽는데.. 죽기전에 실행 해야 할 루틴이 있습니다. 그래서 kill signal이 들어왔을때, 그것을 인식하고 루틴을 실행한 후에 죽게 만들려고 합니다. 어디서 소스가 있길래 그대로 붙여다 써보니깐... 시그널 처리를 하는 것 같은데 안죽어서요... 밑에건 서버 소스는 아니고 시그널이 되는지 시험해보기 위해서 배끼고 만든 소스입니다. 1 import sun.misc.Signal; 2 import sun.misc.SignalHandler; 3 4 public class SomeClass 5 { 6 private static final String SIG_ABRT = "ABRT"; 7 private static final String SIG_BREAK = "BREAK"; 8 private static final String SIG_TERM = "TERM"; 9 private static final String SIG_SEGV = "SEGV"; 10 private static final String SIG_FPE = "FPE"; 11 private static final String SIG_ILL = "ILL"; 12 private static final String SIG_INT = "INT"; 13 14 SomeClass() 15 { 16 SignalHandler sigHdl = new SignalHandler () 17 { 18 public void handle( Signal aSignal ) 19 { 20 System.out.println( "Caught " + aSignal.toString() + " signal."); 21 } 22 }; 23 Signal.handle( new Signal( SIG_INT ), sigHdl ); 24 Signal.handle( new Signal( SIG_TERM ), sigHdl ); 25 } 26 27 public static void main(String argv[]) 28 { SomeClass sc = new SomeClass(); 29 System.out.println("Program started"); 30 for(int i= 0; i < 10000 ; i++) 31 { 32 for(int j=0; j < 10000; j++) 33 { 34 for(int k=0; k < 10000; k++) 35 { 36 //do nothing... 37 } 38 } 39 System.out.println("hahaha"); 40 41 } 42 43 } 44 } 45 저는 이게 원래 지원이 안 되는 것인지 제가 다른 사람의 소스를 잘못 고친 것인지 모르겠습니다. 아시는분 꼭 가르쳐 주세요... 감사합니다. 왜 sun site에 가도 Signal에 대한 메뉴얼이 없는지 모르겠습니다. |