Fork() inmortal en Perl

Luis Rodrigo Gallardo Cruz rodrigo en lisa.dyndns.org
Sab Ene 8 00:29:53 CST 2000


Yo tuve un problema parecido con Python. Lo que pasaba era que no estaba
cerrando los descriptores de archivos correctos. ¿Por qué no revisas eso?

On Wed, 5 Jan 2000, Gunnar Wolf wrote:

> Estoy trabajando con un problema que espero me puedan ayudar a resolver:
> Recientemente, añadi a mi proyectito (wpm) el poder atender mas de una
> peticion simultanea, por medio de un fork() cada que recibe una conexion.
> Obviamente, el proceso padre cierra la conexion y sigue esperando,
> mientras que el proceso hijo atiende a dicha conexion y, al terminar esta,
> muere. Sin embargo, el proceso queda como zombie, y nunca muere. No se si
> haga falta implementar un codigo de limpieza en el padre, ni como hacerlo.
> 
> El pedazo de codigo relevante es:
> 
>     while ($client = $server->accept()) {                                                                                                                  
>         die "Can't fork!: $@" if (!defined ($child=fork()));                                                                                               
>         if ($child == 0) {                                                                       
>             # We are the child process after a fork. We                                                                                                    
>             # continue doing our stuff...                                                                                                                  
> (...)
>             while ($string=<$client>) {                                                                                                                    
> (...)
>             }                                                                                                                                              
>             close $client;                                                                                                                                 
>             exit 0;                                                                                                                                        
>         } else {                                                                                                                                           
>             # After the fork, we are the parent                                                                                                            
>             # process, so we close the socket and                                                                                                          
>             # leave it just for the child. We can                                                                                                          
>             # now go back to answer additional queries.                                                                                                    
>             close $client;                                                                                                                                 
>         }                                                                                                                                                  
>     }
> 
> A alguien se le ocurre lo que puede estar pasando?
> 
> -------------------------------------------------------------------
>                  Gunnar Wolf    gwolf en asc.unam.mx
>      Universidad Nacional Autónoma de México, Campus Iztacala
>   Jefatura de Sección de Admon. de Sistemas y Telecomunicaciones
>         Area de Seguridad en Computo - DCI - DGSCA - UNAM
> -------------------------------------------------------------------
> 
> 
> -- 
> Para desuscribirse, mande correo a: ayuda-unsubscribe en linux.org.mx
> Para comandos adicionales, envíelo a: ayuda-help en linux.org.mx
> 

Luis Rodrigo Gallardo Cruz

-----BEGIN GEEK CODE BLOCK-----
GM/CS d- s-: a-- C++ UL+>++ P L++>+++ E W+ ?o K- !w 
?V PS+ PE- Y+ t+@ ?5 X(+) R+ tv b++ D+ G e+>++ h! r++ y+
------END GEEK CODE BLOCK------


-- 
Para desuscribirse, mande correo a: ayuda-unsubscribe en linux.org.mx
Para comandos adicionales, envíelo a: ayuda-help en linux.org.mx




Más información sobre la lista de distribución Ayuda