Fork() inmortal en Perl
Gunnar Wolf
gwolf en asc.unam.mx
Mie Ene 5 10:54:51 CST 2000
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
Más información sobre la lista de distribución Ayuda