Veja só. quando vc mandou o primeiro SIGINT, a execução do codigo foi
desviada para a função anonima contida em $SIG{INT}, entretanto como vc
sabe que tem que "voltar" para aonde vc estava? não sabe.
veja este exemplo:
my $c = 0; $SIG{INT} = sub { print "$c\n"; $c++;};
do {
eval { print "$c inicio...\n"; sleep 5 ; print "... done\n"; };
} while ($c < 3);
o codigo mesmo esta entre eval { ... } entretanto que sabe se deve
continuar ou não é o codigo externo, o while.
vc nao pode simplesmente mandar 3 SIGINT e achar que o seu script vai saber
lidar com isso. vc vai PARAR a execução pra executar o bloco associado
aquele trap.
agora se vc quer parar o seu programa depois de 3 ctrl+c, faça o seu script
criar um FORK, rodar o que precisa no processo filho e no processo pai vc
controla este estado, depois do terceiro SIGINT vc pode matar o processo,
por exemplo.
2013/11/25 Renato Santos <[email protected]>
>
> SIGINT 2 Term Interrupt from keyboard
>
>
> Esse é o CTRL+C,
>
> $SIG{INT} = 'IGNORE';
>
> não consegui fazer assim:
>
> my $c = 0; $SIG{INT} = sub { return 'IGNORE' if $c++ < 3 };
>
> não sei porque, alguem sabe?
>
>
> 2013/11/25 Andre Luis <[email protected]>
>
>> nesse caso só iria ignorar ele nao irira tratar ... pelo que eu entendi
>> ele quer tratar
>>
>>
>>
>>
>>
>> $SIG{KILL} = sub { do_something() };
>>
>>
>>
>>
>> Em 25 de novembro de 2013 16:06, Renato Santos
>> <[email protected]>escreveu:
>>
>> você tem que ignorar o sinal de KILL do sistema.
>>>
>>>
>>> para saber mais sobre os sinais, http://perldoc.perl.org/perlipc.html
>>>
>>> algo para ignorar pra sempre,
>>>
>>>
>>> $SIG{KILL} = 'IGNORE';
>>>
>>>
>>>
>>> 2013/11/25 Aureliano Guedes <[email protected]>
>>>
>>>> Boa tarde,
>>>> Monges.
>>>>
>>>> Gostaria de saber se existe a possibilidade de eu controlar comandos do
>>>> sistema?
>>>>
>>>> Bom, quando estamos executando algum script, se eu quiser encerra-lo a
>>>> qualquer momento basta que eu tecle Ctrl + C.
>>>> Mas e se eu quisesse, especificamente em um script, determinar que seu
>>>> encerramento fosse após apertar 3 vezes consecutivas Ctrl + C, ou então ao
>>>> apertar Ctrl + shift + C, ou sei lá, qualquer outro comando que eu queira,
>>>> como deveria fazer?
>>>>
>>>> Desde já grato.
>>>>
>>>> Att,
>>>> Aureliano Guedes
>>>>
>>>> _______________________________________________
>>>> Rio-pm mailing list
>>>> [email protected]
>>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>>
>>>
>>>
>>>
>>> --
>>> Saravá,
>>> Renato CRON
>>> http://www.renatocron.com/blog/
>>> @renato_cron <http://twitter.com/#!/renato_cron>
>>>
>>> _______________________________________________
>>> Rio-pm mailing list
>>> [email protected]
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>
>>
>>
>> --
>> "technology does not drive change - it enables change"
>>
>> _______________________________________________
>> Rio-pm mailing list
>> [email protected]
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
> _______________________________________________
> Rio-pm mailing list
> [email protected]
> http://mail.pm.org/mailman/listinfo/rio-pm
>
--
Tiago B. Peczenyj
Linux User #405772
http://about.me/peczenyj
_______________________________________________
Rio-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/rio-pm