[SP-pm] destruir um objeto e die

Frederico Recsky frederico at gmail.com
Mon Dec 15 16:06:03 PST 2008


Olá,

2008/12/15 Otávio Fernandes <otaviof em gmail.com>:
> Fala Recsky,
>
> Eu tenho uma sugestão:
>
> BEGIN{ $SIG{__DIE__} = \&umount_volumes }
>
> sub umount_volumes {
>    print "Desmontando os volumes X, Y e Z";
> }
>
> Acredito que esta é a forma mais simples de resolver o seu problema.

Sim, isso faz com que o die saia com o erro valor 255 :) e desmonte as
coisas. Porem meu destrutor fica vazio, e quando o programa precisa
sair normalmente preciso dele.  Se o destrutor contem o umount também,
ele continua saindo com zero.

A saida, até meio pog. foi colocar uma flag no handler do sig die, e
depois com um END assim:

END {
      $? = 1 if $die;
}

sub umount_volumes {
       $die = 1;
}

Isso "arruma" a saida do processo mesmo quando o DESTROY coloca ela em
zero. Interessante que o handler do die é executado antes do Destroy e
que qualquer fork executado no destroy joga seu status como saida do
programa principal, ao meu ver isso é um bug.

Valeu Otavio :).

[]'s

-- 
____________________________
Frederico Recsky
Linux User: #253572
http://www.fred.eti.br
http://www.perl.org.br


More information about the SaoPaulo-pm mailing list