Что происходит в первом цикле, так это то, что первый процесс разветвляется. В одном случае fork()
возвращает 0, а в другом - pid дочернего процесса. Таким образом, вы получите тот, который печатает «это дочерний процесс», а другой - «это родитель». Оба эти процесса продолжаются через цикл, увеличивая значения i
до 1 и fork()
снова. Теперь у вас есть четыре процесса: двое детей и двое родителей. Все четыре процесса будут увеличивать i
до 2 и выходить из цикла.
Если вы повысили условие завершения цикла до i<3
, то в следующий раз во время цикла все четыре процесса будут выполняться fork()
, и у вас будет всего восемь процессов. Если бы в цикле не было ограничений, у вас была бы форковая бомба , в которой вы просто экспоненциально создавали бы все больше и больше процессов в каждом цикле, пока в системе не закончатся ресурсы.