Строки 25-37. Подпрограмма become_daemon (). Эта подпрограмма подобна приведена в листинге. Она автоматически переводит сервер в фоновый режим, закрывает три стандартных дескриптора файла и отключает сервер от управляющего терминала. Единственное отличие состоит в том, что теперь обработчик сигнала chld устанавливается в этой подпрограмме, а не в главной программе. Обработчик chld представляет собой подпрограмму reap_child ().
Строки 38-42. Подпрограмма init_log (). Эта подпрограмма отвечает за инициализацию соединения с системой syslog. Выполнение подпрограммы начинается с установки типа соединения, соответствующего локальному сокету домена UNIX; благодаря этому, данный модуль может стать более удобным для применения в разных системах, чем при использовании предусмотренного по умолчанию типа соединения “inet”. Определяется также базовое имя файла программы и используется для вызова функции openlog ().
Строки 43-55. Подпрограммы log_*. Вместо непосредственного вызова функции syslog (), определены четыре сокращенные подпрограммы: log_debug (), log_notice (), log_warn () и log_die (). Каждая из них принимает один или более строковых параметров в таком же стиле, как функция warn(), переформатирует их и вызывает функцию syslog () для вывода в журнал сообщения с соответствующим приоритетом. Подпрограмма log_die () немного отличается от остальных. Она выводит в журнал сообщение с приоритетом crit, а затем вызывает функцию die () для выхода из программы.
Подпрограмма _msg () используется в этих же подпрограммах для форматирования сообщений журнала. Она соответствует соглашениям, применяемым в функциях warn() и die().