Есть ли способ узнать, что будет делать программа, когда она получит сигнал уничтожения HUP?
Не просто запустив команду ofc: D
Например,
killall -HUP pppd
будет перезагружен PPPd
killall -HUP firefox
будет просто убить Firefox
Прочитайте его документацию. Это единственный способ. Как уже писал Кит , первоначальный смысл SIGHUP заключался в том, что пользователь потерял доступ к программе, и поэтому интерактивные программы должны умереть. Демоны - программы, которые не взаимодействуют напрямую с пользователем - не нуждаются в этом поведении и вместо этого часто перезагружают свои файлы конфигурации при получении SIGHUP. Но это всего лишь условности.
Если у вас есть источник, вы можете прочитать это тоже. Или, если у вас есть только двоичный файл, вы можете попытаться разобрать его, найти sigaction
вызовы, для которых устанавливается обработчик сигнала SIGHUP
, и попытаться выяснить, что делают эти обработчики сигнала. Во-первых, будет проще не отправлять SIGHUP в эту программу.
В любой момент времени данный процесс находится в одном из трех состояний по отношению к конкретному сигналу: игнорирование его, выполнение действия по умолчанию или запуск пользовательского обработчика. Многие юниты позволяют вам видеть маску сигналов процесса ps
, например, ps s
в Linux. Это может сказать вам, если процесс игнорирует сигнал или мгновенно умрет при SIGHUP, но если процесс установил обработчик, вы не можете сказать, что делает обработчик.
Действие по умолчанию - завершить процесс на SIGHUP. Смотрите
man 7 signal
для более подробной информации. Но программы могут заманивать это в ловушку и делать все, что они хотят. Поскольку процессы-демоны никогда не должны завершаться, они обычно используют SIGHUP для других целей, например для повторной инициализации (как это делает pppd). Firefox сохраняет действие по умолчанию.источник