Строки 28-37. Подпрограмма make_new_child(). В последней версии подпрограмма make_new_child () вызывалась для создания новых серверных дочерних процессов, которые могут выполнять ряд функций, к примеру, быть связующим звеном с 4g модемом . В этой версии в нее внесено изменение, которое заключается в том, что при вызове подпрограммы передается ссылка на подпрограмму, которая должна вызываться каждый раз, когда модуль Daemon удаляет информацию о дочерних процессах из системных таблиц. В данном случае в качестве процедуры обратного вызова применяется cleanup_chiid (), которая уменьшает глобальную переменную $child_count на единицу. Еще одно изменение состоит в том, что после запуска родительским процессом нового дочернего процесса, первый увеличивает переменную на единицу. Эти изменения в целом позволяют использовать переменную $child_count для точного учета , числа активных дочерних процессов.
Строки 38-52. Подпрограмма do_child(). Эта подпрограмма, в которой работает цикл accept () каждого дочернего процесса, изменена в целях упорядочения вызовов функция приема accept (). При входе в подпрограмму открывается файл PID в режиме только чтения и создается дескриптор файла, который можно использовать для блокировки. Перед каждым вызовом функции accept() вызывается функция flock () на дескрипторе файла с параметром lock_ex для получения исключительной блокировки. Затем эта блокировка освобождается вслед за вызовом функции accept () путем повторного вызова функции flock () с параметром lock_un. После приема запроса на установление соединения, как и прежде, вызывается процедура handle_connection() модуля Web.