Intereting Posts

Невозможно остановить C-демона в определенных ситуациях из PHP

Я создал простой демон C в Linux. Демон установлен для захвата сигнала SIGTERM, выполняет некоторую очистку и завершает работу. При запуске из командной строки это ведет себя так, как ожидалось. Отправка SIGTERM демона с помощью команды kill обрабатывается должным образом.

Тем не менее, я хотел бы иметь возможность запустить и остановить демона из PHP-приложения. Я делаю это с помощью exec () в PHP. Начать

exec("$daemon_name"); 

и прекратить

 exec("kill $daemon_pid"); 

Запуск этого демона всегда работает, но останавливаться не стоит. Фактически, при запуске этого способа выполнение kill из командной строки также не работает. Теперь работает только «kill -9», и это явно не требует необходимой очистки. Насколько я могу судить, процесс просто не получает сигнал.

Вот что действительно меня достало. Когда я развертываю эту ту же конфигурацию на SLES 12 или OpenSuSE 42.2, она не работает, но на OpenSuSE 42.1 она работает (я могу запустить AND stop через PHP).

Это не вопрос разрешений, я проверил это.

У меня нет идей относительно того, что может заставить процесс не получать сигнал SIGTERM. Глядя на вывод «ps aux» и «ps -ef», я не вижу разницы между демонами, запущенными из командной строки, и одним запуском через PHP.

Изменить: Спасибо за все комментарии. Ни один из них, похоже, не учитывает, что тот же самый код работает на некоторых системах, но не на других. Единственное, о чем я могу думать, это то, что демон запускается в разных средах. Вопрос: Есть ли что-нибудь в среде, в которой запущен процесс, который может заставить его игнорировать сигналы?