esto es una continuación de How to squeeze in additional parameters to a reaper function when a parent is signalled to kill a child (c)?wait()/waitpid() devuelve 1, no pid de hijo, ¿cómo solucionarlo?
En mi segador(), trato de obtener el PID hijo de los padres está a punto de terminar (la palabra no brutal aquí). pero wait() no devuelve el pid del niño; en su lugar, devuelve 1. No puedo encontrar un documento para el valor de devolución de 1 en cualquier lugar. ¿Algún aviso?
void reaper(int sig)
{
int status, killedpid;
while(killedpid = (/*waitpid(-1, &status, WNOHANG)*/wait(&status)) >= 0)
{
printf("reaper %d killed %d\n", getpid(), killedpid);
}
}
Mis resultados:
reaper 5933 killed 1 //actual child pid is 5936
gracias de antemano!
Oh, digo seguir con la terminología. Eso es parte de la diversión de * nix. "El niño murió y el padre cosechó el proceso zombie". – Thanatos