SIGHUP
отправляется вашему процессу, когда он пытается записать в сокет или канал, который был закрыт с другой стороны.Вот почему люди обычно блокируют сигнал SIGHUP
в сетевых приложениях.(Кроме того, когда завершается процесс лидера сеанса, он отправляет SIGHUP
всем дочерним процессам в своей группе процессов.)
Если вы не блокируете SIGHUP
, потому что хотите его обработать, убедитесь, что ваше приложение прошлоMSG_NOSIGNAL
на все send
вызовы, чтобы он не генерировал SIGHUP
.В противном случае вы не сможете сказать, что вызвало SIGHUP
- send
из pkill -SIGHUP my_app
.
Так как SIGHUP
имеет многократное использование, вы можете использовать другой сигнал, например SIGUSR1
,поручить вашему приложению перезагрузить конфиг.Ничто другое не посылает этот сигнал.Или пусть ваше приложение открывает сокет TCP или UNIX, в который вы можете отправлять команды своему приложению.