Эта версия функции уборки ожидает завершения работы конкретного дочернего процесса и возвращает его идентификатор, помещая код состояния выхода в переменную $?. Если дочерний процесс с идентификатором $pid на данный момент не доступен для уборки, то функция waitpid() блокируется, пока он не станет таковым. Для обеспечения ожидания доступности любого дочернего процесса с помощью этой функции, как и с помощью функции wait (), можно установить значение параметра $pid, равное -1.
Поведение функции waitpid() можно изменить с помощью параметра flags стандартного модуля POSIX, который определяет ряд удобных констант. Они могут быть объединены с помощью поразрядного оператора “ИЛИ" для использования их в сочетании друг с другом. Наиболее часто применяется флажок WNOHANG, который переводит функцию waitpid () в неблокирующий режим. Функция waitpid ( ) возвращает PID дочернего процесса, если он имеется. Если же нет ни одного доступного дочернего процесса, эта функция возвращает значение -1 и блокируется ожидая его появления. Иногда возникает также необходимость в использовании флажка WUNTRACED, который указывает функции waitpid (), что она должна вернуть идентификаторы PID не только завершившихся, но и остановленных дочерних процессов.
“Уборка” дочерних процессов в обработчике сигнала CHLD. Стандартным способом уборки дочерних процессов в серверах Perl является установка обработчика сигнала CHLD.