Это может быть менее беспорядочным, если вы используете собственную переменную pid для каждого pid (например, p1, p2 ...).И, возможно, это поможет, если вы прокомментируете, какой процесс запускает ветки:
pid_t p1, p2, p3, p4, p5, p6, p7;
p1 = getpid();
p2 = fork();
if (p2 != 0)
{
// P1 runs this branch
p3 = fork();
if (p3 == 0)
{
// P3 runs this branch
p4 = fork();
if (p4 == 0)
{
// P4 runs this branch
p5 = fork();
if (p5 != 0)
{
// P4 runs this branch
p6 = fork();
if (p6 != 0)
{
// P4 runs this branch
p7 = fork();
}
}
}
}
}
В вашем коде могут быть другие проблемы.Но, например, это:
// create child#1
fork();
// create child#2
fork();
// create child#3
fork();
... породит дерево из 7 детей.
Если вы создаете серьезную программу (не просто играете с fork
), тогда вам нужнопроверить результат fork()
лучше, потому что он также может потерпеть неудачу.