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

Odpovedet emailem