Pokial sa nemylim, ctrl+c standardne zasiela SIGINT, nie SIGTERM

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
>



-- 
Jozef

Odpovedet emailem