pcntl, демон устойчивый против SIGKILL

oudav

Новичок
pcntl, демон устойчивый против SIGKILL

Задача - средствами php реализовать перезапуск демона если ему пришел SIGKILL.

Сразу родилась идея использовать дополнительный watchdog-процесс. Который бы перезапускал демона, а если бы watchdog был убит, сам демон бы его запустил заново. Но вот беда, pcntl_wait не принимает pid'ы ЧУЖИХ процессов, только своих детей. Если watchdog будет родителем демона то его смерть повлечет смерть демона (станет зомби?). И наоборот, если watchdog будет ребенком, то результата мы опять не добьемся. Единственный выход - чтобы демон и watchdog были независимыми, но в этом случае pcntl_wait(pid) сразу завершается.
 

phprus

Moderator
Команда форума
oudav
Перехватить SIGKILL в принципе невозможно (http://ru.wikipedia.org/wiki/SIGKILL).

Если тебе нужен перезапуск, то напиши shell скрипт, который будет вначале убивать твоего демона, а потом сразу-же запускать. Если тебе нужно реализовать что-то типа перечитывание конфиг-файлов по сигналу, то используй сигнал SIGHUP (http://ru.wikipedia.org/wiki/SIGHUP) так как этот сигнал обычно используется для перечитывания файлов конфигурации в различных демонах.
 
Сверху