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