Проблема при перезагрузке конфигурации с использованием сигнала sighup sv hup - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть служба, написанная на c ++, которая прослушивает определенный порт.Я хочу перезагрузить файл конфигурации, используя сигнал SIGHUP sudo sv hup service_name.Но служба перезапускается.Сервис перезапускается только тогда, когда сокет закрыт или заблокирован.Сигнал SIGHUP блокирует порт прослушивания?

1 Ответ

0 голосов
/ 21 сентября 2018

SIGHUP отправляется вашему процессу, когда он пытается записать в сокет или канал, который был закрыт с другой стороны.Вот почему люди обычно блокируют сигнал SIGHUP в сетевых приложениях.(Кроме того, когда завершается процесс лидера сеанса, он отправляет SIGHUP всем дочерним процессам в своей группе процессов.)

Если вы не блокируете SIGHUP, потому что хотите его обработать, убедитесь, что ваше приложение прошлоMSG_NOSIGNAL на все send вызовы, чтобы он не генерировал SIGHUP.В противном случае вы не сможете сказать, что вызвало SIGHUP - send из pkill -SIGHUP my_app.

Так как SIGHUP имеет многократное использование, вы можете использовать другой сигнал, например SIGUSR1,поручить вашему приложению перезагрузить конфиг.Ничто другое не посылает этот сигнал.Или пусть ваше приложение открывает сокет TCP или UNIX, в который вы можете отправлять команды своему приложению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...