[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