predpokladam ze v kode ste zmenil new Signal("INT"), a handler sa aj tak nevyvola ?
2009/7/23 Dusan Zatkovsky <msk.c...@gmail.com>: >> Pokial sa nemylim, ctrl+c standardne zasiela SIGINT, nie SIGTERM > > Ano, je to tak, ospravedlnujem sa. > > Takze kill -SIGINT $pid urobi presne to, co CTRL+C. > Signal handler sa odignoruje. > >> 2009/7/23 Dusan Zatkovsky <msk.c...@gmail.com>: >> > Ahoj. >> > >> > Mam dost vazny problem so zachytavanim signalov v jave. >> > >> > V konzolovej aplikacii potrebujem garantovat, ze sa mi vykona urcity blok >> > kodu. Akekolvek prerusenie vo vnutre tohoto bloku je povazovane za >> > fatalnu chybu, ktoru treba potom rucne riesit. Tento blok sa vykonava >> > cyklicky. >> > >> > Ja teraz potrebujem mat moznost tu aplikaciu rucne zastavit pomocou >> > ctrl+c. Problem je, ze aj nasledovny testovaci kod na ctrl+c zvysoka >> > kasle a aplikacia sa (s)proste zastavi. Pritom pomocou kill -TERM >> > $pidProcesu sa aplikacia chova tak, ako ma ( vypise text a pokracuje >> > dalej ). >> > >> > Ako donutim jvm, aby sa spravala tak ako sa patri? >> > >> > Diky. >> > >> > class MyHandler implements SignalHandler { >> > public void handle(Signal s) { >> > System.out.println("catch signal " + s.toString()); >> > } >> > } >> > >> > class Main { >> > public static void main(String[] args) { >> > MyHandler h = new MyHandler(); >> > Signal.handle(new Signal("TERM"), h); >> > for (int i = 0; i < 100; i++) { >> > System.out.println("sleep " + i); >> > try { >> > Thread.sleep(1000); >> > } catch (InterruptedException e) { >> > System.out.println("exc"); >> > } >> > } >> > System.out.println("end"); >> > } >> > } >> > >> > >> > >> > >> > >> > -- >> > Dusan > -- > Dusan > -- Jozef