Процессы Forking создают дочерние элементы в древовидной форме. Рассматривайте каждый форк как разные слои двоичного дерева. Когда вы не запускаете fork (), у вас есть дерево процессов только с корневым узлом. один fork (), тогда у вас теперь есть двоичное дерево с двумя уровнями, первый уровень будет содержать родительский процесс, второй уровень будет содержать два процесса - родительский и дочерний процесс.
Когда вы хотите узнать количество процессов, которые у вас под рукой, просто продолжайте строить двоичное дерево / дерево процессов и посмотрите, сколько узлов существует на последнем уровне, последний уровень - это не что иное, как текущее состояние процесса / Функция tree.Wait заставляет вашего родителя ждать завершения дочернего процесса. В приложениях, где вам не нужен процесс зомби, вам нужно подождать, иначе эти процессы зомби будут продолжать перегружать систему ... ссылка .
Помните, что ожидание также полезно, когда вы всегда хотите, чтобы родитель закончил после ребенка. Форкинг не всегда дает один и тот же результат, порядок перемешан, поэтому, чтобы получить один и тот же результат всегда, используйте wait (). Чтобы дождаться определенного дочернего процесса, используйте wait (pid), где pid - это pid определенного дочернего процесса, и этот pid можно получить с помощью getpid внутри пространства дочернего процесса.