Я новый C dev. Я пытаюсь синхронизировать три процесса, чтобы напечатать [ОТЕЦ] [СЫН] [ГРАНДСОН] [ОТЦ] [СЫН] [ГРАНДСОН] с этим кодом:
int main(int argc, char **argv)
{
int c = 0;
while (c<2)
{
c++;
printf("[FATHER]");
pid_t son = fork();
if (son == 0)
{
printf("[SON]");
pid_t grandson = fork();
if (grandson == 0)
{
printf("[GRANDSON]");
return 0;
}
wait(NULL);
return 0;
}
wait(NULL);
};
}
Вместо этого я получаю этот вывод: [ОТЕЦ] [СЫН] [ГРАНДСОН] [ОТЕЦ] [СЫН] [ОТЕЦ] [ОТЕЦ] [СЫН] [ГРАНДСОН] [ОТЕЦ] [ОТЕЦ] [СЫН] [ОТЕЦ] [ ОТЕЦ]
Неужели я что-то недопонимаю или упускаю при использовании кода ожидания? Большое спасибо.