Подпрограмма launch_child () возвращает PID дочернего процесса в родительском процессе и числовое значение в дочернем. В первом случае выполняется просто запись в журнал отладочного сообщения. В последнем случае закрывается дескриптор файла child_read, поскольку он больше не нужен, и выполняются процедуры настройки Web- сервера путем вызова подпрограммы do_child(). После завершения работы подпрограммы do_child () прекращается выполнение данной подпрограммы.
Строки 68-91. Подпрограмма do_child(). По сути, эта процедура выполняет точно такие же действия, как и предыдущая версия подпрограммы do_child (). Она упорядочивает доступ к приемному сокету, переводя дочерний процесс в состояние ожидания освобождения файла блокировки с использованием функции flock (), вызывает метод accept () приемного сокета и передает подключенный сокет функции handle_connection () модуля Web. Основные отличия состоят в том, что эта подпрограмма, во-первых, реагирует на сигналы hup, направляемые ей родительским процессом, выполняя корректный останов, и, во-вторых, записывает сообщения с кодом состояния в дескриптор файла child_write.
Строки 70-73. Инициализация подпрограммы и запуск цикла accept (). После входа в подпрограмму do_child(), как и прежде, открывается файл блокировки и инициализируется переменная $cycles. Затем устанавливается обработчик для сигнала hup, который присваивает локальной переменной $done истинное значение.