[Cascavel-pm] comando trap UNIX

Alexandre de Abreu alexandre.abreu em gmail.com
Sábado Novembro 12 11:50:12 PST 2005


Olá a todos,

O comando trap, que associa um signal a um ou mais comandos em
shell(bash, ksh, etc) é utilizado para capturar um evento(SIGNAL) em
qualquer momento após a configuração do trap e o final da execução do
script. Neste caso:

eval {
     open my $fh, "<", $filename;
     print $fh, "Olá mundo!\n";
     close $fh;
}

Se ativássemos o trap antes do open, e no momento em que o open é
executado houvesse um problema, o fluxo seria desviado para o bloco do
trap, ou seja, o "print $fh" talvez nem fosse executado.

O Perl suporta essa "feature" de outra forma, mas, com a mesma
efetividade da shell:

http://perldoc.perl.org/perlfaq8.html#How-do-I-trap-control-characters%2fsignals%3f

Abraços

Alexandre de Abreu

On 11/11/05, Igor Sutton Lopes <igor em izut.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Juliano,
>
> Você pode utilizar o eval para fazer isso, em trechos do seu código.
>
> Por exemplo:
>
> <code>
> eval {
>     open my $fh, "<", $filename;
>     print $fh, "Olá mundo!\n";
>     close $fh;
> };
> if ($@) {
>     print <<EOF;
> Aconteceu um erro:
>     $@
> EOF
> }
> </code>
>
> Espero que ajude.
>
> Juliano Dantas wrote:
>
> > Monges,
> >
> > Existe um comando chamado TRAP no unix, o qual trata qualquer sinal
> > mascaraveis do sistema operacional, são aqueles que normalmente
> > interrompe o programa. Ou seja, quando aparece algum erro fatal na
> > execução de um programa, ele deve executar um outro programa ou até
> > mesmo executar uma determinada função. Bem, quando eu uso o
> > comando "system" nos meus scripts, eu utilizo um IF que faz o
> > tratamento obtendo o resultado de $? junto com o PRINTF, contudo,
> > se eu tenho várias chamadas no comando "system" no meu script, eu
> > tenho que realizar o IF pra cada. A minha pergunta é: Existe alguma
> > maneira de obter o mesmo resultado do comando TRAP, ou seja, tem
> > como eu obter os erros sem fazer tratamento pra cada comando que eu
> > realize?
> >
> > Abraços a todos, -- Juliano Dantas Almeida Silva
> > _______________________________________________ Cascavel-pm mailing
> > list Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
>
> - --
>
> Igor Sutton Lopes <igor em izut.com>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
>
> iD8DBQFDdR1OLVWx7fXgWJgRAhwUAKDw6775QlOBPHJHbEmZo6GE1v7nCgCgmjZP
> ZNBtxuo36bcdR3A4vW68mx8=
> =+08N
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


--
Alexandre de Abreu, GCUX, RHCE


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