[Cascavel-pm] Problemas ao interceptar sinais

Luis Motta Campos luismottacampos em yahoo.co.uk
Quinta Abril 5 00:28:46 PDT 2007


On Apr 5, 2007, at 3:46 AM, Iberê O. Kuntz de Souza wrote:
> Fala monges..
>
> To com um problema aqui, pois não consigo ver minhas variaveis
> declaradas anteriormente dentro de um manipulador de sinal. Ex:
> --------------------------------------------------------------
> $SIG{INT} = \&teste;
> sleep(99999999);
> my $var = 1;
> sub teste {
> 	print "$var\n";
> 	exit;
> }
> ---------------------------------------------------------------
>
> com o warnings ativado eu recebo: "Use of uninitialized value in
> concatenation (.) or string at * line *."
> Tentei usar o sigtrap para morrer normalmente e assim chamando END{},
> mas dentro do END{} tb não consigo ver minhas vars. Declarando um
> manipulador para o sigtrap tb tive o mesmo problema.
>
> Algm sabe alguma solução?

   Para aprender a usar sinais: RTFM, e comece pelo "Modern Operating  
Systems" do A. Tanembaum, que vai te ajudar a entender sinais.

   Sobre brincar com o hash %SIG: leia sem pressa a secção "Signals"  
do perlipc, que vai te ajudar bastante também.

   Agora, se você tem um problema e precisa resolver, que tal  
expressá-lo de uma maneira genérica, para que a lista possa dar  
sugestões de como resolvê-lo de uma forma inteligente? Se seu  
problema é terminar imediatamente a execução de alguma coisa, usando  
um signal handler para isso, e rodando o código de clean-up de um  
bloco END, eu posso dizer que existem formas melhores e mais  
confiáveis de se fazer isso.

   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




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