Давайте обозначим все позиции, в которых создаются процессы:
A: fork();
B: fork();
C: if( fork() > 0)
{
D: fork();
E: fork();
}
return 0;
И построим дерево, показывающее все созданные процессы и метку ветвления, из которой они созданы:
В этом дереве узлы изображают процессы, а метки по краям показывают вызов fork()
, который создал каждого потомка (например, pro c. 1 созданный pro c .2 через вилку А). Если вы посчитаете узлы, вы увидите, что на самом деле это 20 процессов. (Извините, что не соблюдаю ни строгую BFS, ни DFS для моих имен)