#include <stdio.h>
#include <sys/type.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
int main(void)
{
pid_t pid;
int i;
for(i=0; i<3; i++) {
pid = fork();
if(pid == -1) {
printf("Fork Error.\n");
} else if(pid == 0) {
printf("I am child");
}
}
if(pid != 0) {
while((pid = waitpid(-1, NULL, 0)) > 0)
if(errno == ECHILD)
break;
printf("I am parent and all children have exited.\n");
}
exit(0);
return 0;
}
Результат таков:
«Я - ребенок» напечатано 7 раз: «Я - родитель, и все дочерние элементы вышли». печатается 4 раза
, и последовательность печати не фиксирована.
Я выяснил некоторые вопросы, с которыми я боролся, но некоторые нет. Итак, вот оно.
Почему «Я родитель, и все дети ушли». печатается 4 раза?
Не могли бы вы подробно объяснить?
PS. Я знаю, что sys / wait.h нужно вставить поверх кода, но мой босс не хочет, чтобы я это делал.