> 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 <[email protected]>: > > 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
