SIGTERM v Jave
Jozef Sevcik
sevcik na styxys.com
Čtvrtek Červenec 23 10:25:09 CEST 2009
Pokial sa nemylim, ctrl+c standardne zasiela SIGINT, nie SIGTERM
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
>
--
Jozef
Další informace o konferenci Konference