[Rio-pm] [HELP] Controlando comandos do sistema

Tiago Peczenyj tiago.peczenyj em gmail.com
Segunda Novembro 25 10:42:21 PST 2013


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 <renato.cron em gmail.com>

>
>  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 <alpbs2003 em gmail.com>
>
>> 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 <renato.cron em gmail.com>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 <guedes_1000 em hotmail.com>
>>>
>>>> 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
>>>> Rio-pm em pm.org
>>>> 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
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>
>>
>>
>> --
>> "technology does not drive change - it enables change"
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> 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
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://about.me/peczenyj
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20131125/4fbd7fc3/attachment-0001.html>


Mais detalhes sobre a lista de discussão Rio-pm