[bcn-pm] IPC::Open3 d'un executable que no existeix i gesti d'errors
xdrudis
xdrudisatinet.cat
Dma Maig 30 11:37:29 PDT 2006
El Fri, May 26, 2006 at 11:29:11AM +0200, Salvador Fandiño deia:
> Hola,
>
> Primero, disculpas por enviar el mensaje como nuevo ;-) por algun
> motivo, los mensajes que envio desde mi cuenta de yahoo, que es con la
> que estoy subscrito, no llegan a la lista. Alguien tiene idea de por que
> puede ser?
>
> Y ya, a lo que iba, una version reducida del problema:
>
> use IPC::Open3;
> eval { open3("<&STDIN", ">&STDOUT", ">&STDERR", "/foo/bar") };
> print "$$ was here\n";
>
> y otro problema similar que no se soluciona sustituyendo la llamada a
> croak por exit:
>
> use IPC::Open3;
> END { print "END: $$ was here\n"; }
> open3("<&STDIN", ">&STDOUT", ">&STDERR", "/foo/bar");
>
> En realidad hay que llamar a POSIX::_exit que sale sin realizar
> ningun tipo de "limpieza" o si no se quiere cargar el modulo POSIX
> que es bastante pesado, hacer que el proceso hijo se suicide con kill(9,
> $$) o con un exec("/bin/false");
>
> En fin, Xavi, envias tu el bug report?
>
Si. L'acabo d'enviar (així aprenc a enviar-ne).
He comentat al report que si el pare vol saber l'error encara que el fill
no faci croak (que tampoc serviria al pare per saber l'error) crec que pot mirar $?.
Potser el pare podria mirar $? al open3 i fer un croak des del pare, no sé.
Tampoc sé si això només passa en el meu test o es portable a altres casos,SOs, etc.
--
Xavi Drudis Ferran
xdrudisatinet.cat
Més informació de la llista de correu Barcelona-pm