Как будет описано ниже, каждый дочерний процесс имеет обработчик сигнала hup, который вызывает их завершение по окончании обслуживания текущего соединения. Это лучше немедленного завершения дочерних процессов, поскольку исключает возможность нарушения работы сеанса Web.
После подсчета числа простаивающих дочерних процессов выполняется их сортировка по числовым значениям идентификаторов процессов, что позволяет начать уничтожение с тех лишних дочерних процессов, которые были запущены раньше. Возможно, сейчас в этом нет необходимости, но такое решение может оказаться полезным, если эти процессы допускают утечку памяти
Строки 54-70. Завершение работы. После окончания работы главного цикла в журнал записывается предупреждающее сообщение и вызывается подпрограмма kill_children (), которая определена в модуле Daemon. Подпрограмма kill_children () отправляет каждому дочернему процессу сигнал term, а затем ожидает завершение работы каждого из них. После возврата управления этой подпрограммы происходит регистрация второго сообщения и останов сервера.
Строки 58-67. Подпрограмма make_new_child(). Эта подпрограмма вызывается для создания нового дочернего процесса. Вызывается подпрограмма launch_child() модуля для создания путем ветвления нового дочернего процесса с применением блокировки сигналов. При вызове подпрограмме launch_child() передается ссылка на код процедуры обратного вызова, которая будет вызываться сразу после удаления информации о дочернем процесса из системных таблиц. Процедура обратного вызова cleanup_child () поддерживает хеш % STATUS в актуальном состоянии даже при аварийном завершении дочерних процессов.
2014-12-18 19:23:51
это интересно В современном мире достаточно сложно обойтись без высоких технологий, которые уже подстерегают нас на каждом шагу. Освоение компьютерной грамоты http://www.danco.com.ua/pcrus.html это один из фундаментальных шагов для адекватного симбиоза с реальной жизнью. Ведь именно основы пользования и управления компьютером лежат в интерфейсах планшетов, мобильных телефонов и др.