[Rio-pm] [HELP] Controlando comandos do sistema
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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
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_1...@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@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
Boa pergunta, no perl eu nao sei. No shell é ~ $ trap trap -- '' SIGTSTP trap -- '' SIGTTIN trap -- '' SIGTTOU Acho que já um caminho pra voce pesquisar. Em 25 de novembro de 2013 16:04, Aureliano Guedes guedes_1...@hotmail.comescreveu: 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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Oscar Marques osca...@gmail.com http://www.dunkelheit.com.br @f117usbr https://twitter.com/#%21/f117usbr +55 21 9293-9343 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
Exemplo: #!/usr/bin/perl my $down = 0; @SIG{qw( INT TERM HUP )} = sub { $down++; die('Going down') if $down = 3; }; while (1) { print TESTE\n; sleep 1; } Em 25 de novembro de 2013 16:10, Andre Luis alpbs2...@gmail.com escreveu: 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.c...@gmail.comescreveu: 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_1...@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@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- technology does not drive change - it enables change -- technology does not drive change - it enables change ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
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.c...@gmail.com SIGINT2 TermInterrupt 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 alpbs2...@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.c...@gmail.comescreveu: 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_1...@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@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- technology does not drive change - it enables change ___ Rio-pm mailing list Rio-pm@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
André Luiz, vou fazer da sua forma, obrigado.Agora fiquei sem entender porque $SIG{qw (INT TERM HUP)}... Renato, tentei fazer assim:my $c = 0; $SIG{INT} = sub { $c = 2 ? $c++ : die }; while (1) {print TESTE\n;sleep 1;} Deu certo, mas deu errado, por algum motivo tenho que apertar ctrl + c umas 4 vezes ou mais para dar certo From: renato.c...@gmail.com Date: Mon, 25 Nov 2013 16:22:07 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [HELP] Controlando comandos do sistema SIGINT2 TermInterrupt 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 alpbs2...@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.c...@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_1...@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- technology does not drive change - it enables change ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [HELP] Controlando comandos do sistema
André Luiz, vou fazer da sua forma, obrigado.Agora fiquei sem entender porque $SIG{qw (INT TERM HUP)}... Renato, tentei fazer assim:my $c = 0; $SIG{INT} = sub { $c = 2 ? $c++ : die }; while (1) {print TESTE\n;sleep 1;} Deu certo, mas deu errado, por algum motivo tenho que apertar ctrl + c umas 4 vezes ou mais para dar certo From: renato.c...@gmail.com Date: Mon, 25 Nov 2013 16:22:07 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [HELP] Controlando comandos do sistema SIGINT2 TermInterrupt 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 alpbs2...@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.c...@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_1...@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- technology does not drive change - it enables change ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRONhttp://www.renatocron.com/blog/ @renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm