> 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.conf na 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