Я чувствую, что, хотя это разрешено, это плохая практика, ее вроде бы оставляют последнюю половину двоеточия ваших функций и циклов.
Помимо завершения дочернего процесса, функция waitpid
могла бы вернуться рано, если была прервана сигналом. Если это так, блок if
не будет введен и попытка waitpid
будет предпринята снова.
Без цикла, если waitpid
прервано, вы окажетесь в состоянии, когда родительский процесс не ждет дочернего процесса, и вы получите процесс зомби, когда дочерний процесс действительно завершится. Этот зомби не будет очищен до тех пор, пока не выйдет родительский процесс, после чего процесс init становится родительским и автоматически ожидает зомби.