[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