Escribo mi propio caparazón de juguete y me encuentro con un bache tratando de implementar el control del trabajo.No Child Process Error de waitpid() al esperar el grupo de proceso
Estoy estableciendo el grupo de procesos del hijo, tanto en el hijo como en el padre con setpgid. Mi llamada de espera es:
Sin embargo, waitpid devuelve -1 y perror dice "Sin proceso hijo". Sin embargo, parece esperar todo el tiempo. Además, la salida ps parece correcta cuando se ejecuta desde el shell. Desde ps el proceso de los padres es kbsh como lo esperaría.
% ps -o pid,ppid,pgrp,session,tpgid,comm
Forking
In Parent: Setting process group to 20809 of process 20809 with setpgid
In Child Processes, pid of child process is 20809
in Child: Setting process group to 20809 of process 20809 with setpgid
Requesting that Process Group 20809 becomes the foreground process with tcsetpgrp
Waiting for job with process group 20809
PID PPID PGRP SESS TPGID COMMAND
12002 32573 12002 12002 20809 zsh
20808 12002 20808 12002 20809 kbsh
20809 20808 20809 12002 20809 ps
Wait Error: No child processes
Restoring Shell process group 20808 to forground
¿Alguien ve lo que estoy haciendo mal? puede publicar más código si es necesario ...
parece suceder con -1, así como -pid SIGCHILD –
Fue ignorning, esa es la razón por la que no estaba funcionando :-P –