estoy escribiendo un pequeño programa que crea 5 procesos hijos, cada proceso hijo escribe por pantalla su pid y termina. El proceso padre se debe quedar a la espera y notificar por pantalla cada vez que un proceso termine además de especificar cuántos procesos quedan activos.
El código que he escrito es el siguiente
#include<unistd.h> #include<stdio.h>#include<stdlib.h>#include<sys/types.h> #include<stdio.h>#include<errno.h>#include <sys/wait.h>int main(int argc, char *argv[]){ int childpid=0; int n_hijos = 5; int estado; pid_t pid_aux = 0; for(int i = 0; i < n_hijos; i++) { if(childpid == 0) { if((childpid = fork()) == -1) { printf("\nError %d en fork",errno); exit(EXIT_FAILURE); } } } if(childpid != 0) { printf("Soy el hijo %d\n",getpid()); exit(EXIT_SUCCESS); } while(childpid == 0 && n_hijos > 0) { pid_aux = wait(&estado); if(pid_aux == -1) { printf("\nError %d en wait",errno); } printf("\nAcaba de finalizar mi hijo con PID %d",pid_aux); n_hijos--; printf("\nSolo me quedan %d hijos vivos",n_hijos); } return EXIT_SUCCESS;}
El problema es que la variable pid_aux del bucle siempre vale -1 y la variable errno vale 10.
He buscado que quiere decir errno 10 en la llamada la sistema wait, pero no lo encuentro y no se que estoy haciendo mal.