predpokladam ze v kode ste zmenil new Signal("INT"), a handler sa aj
tak nevyvola ?

2009/7/23 Dusan Zatkovsky <msk.c...@gmail.com>:
>> 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.c...@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
>



-- 
Jozef

Odpovedet emailem