Я пытаюсь понять fork(), поэтому я собрал следующий пример:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
void main()
{
if(fork()==0)
{
printf("2");
if(fork()==0)
{
printf("4");
}
else
{
printf("3");
}
}
else
{
printf("1");
}
}
Когда я просматривал это на бумаге, я нарисовал следующий эскиз:
Итак, я считаю, что результат должен быть 1234. Однако, когда я запускаю этот код, вывод 12324. Почему это? Где моя ошибка?
Обновление:
После прочтения комментариев было предложено выполнить любое из следующих
- Добавьте
\n
в каждый оператор printf - ИЛИ: Добавить
fflush(stdout);
после каждого оператора printf - ИЛИ: Добавить
setbuf(stdout, NULL);
< ---- это то, что я закончил:)
После обновления моего кода вывод был действительно 1234.