Я хочу знать полную информацию о SIGTTIN
сигнале, например, я хочу знать, SIGTTIN
можно ли обработать сигнал или нет.
Этотдокументацияговорит о сигнале только следующее SIGTTIN
:
SIGTTIN 21,21,26 Остановить ввод терминала для фонового процесса
Ввод данных man SIGTTIN
в терминале ничего не дал.
Редактировать:
Я имел в виду не то, какие сигналы можно отправлять процессу, а то, может ли процесс, получающий сигнал, изменить действие сигнала по умолчанию. Например: действие по умолчанию для сигнала SIGTTIN
— остановить процесс, вы можете изменить это действие по умолчанию в своей программе с помощью sigaction()
функции. Некоторые сигналы не позволяют изменять свои действия по умолчанию, и это то, что я ищу (документацию о том, какие сигналы не позволяют изменять свои действия по умолчанию).
решение1
Вы можете использовать эту команду, которая обычно верна.
kill -l | egrep SIGTTIN
Вы также можете написать быстрый скрипт PERL для перехвата SIGTTIN +, а затем запустить его в фоновом режиме + вывести простое диагностическое сообщение, если запущен ваш обработчик SIGTTIN.
решение2
Я не думаю, что можно изменить действие сигнала по умолчанию, как и полностью игнорировать сигнал или установить обработчик сигнала.sigaction(2)
говорит:
sa_handlerуказывает действие, которое должно быть связано с signum, и может быть
SIG_DFL
действием по умолчанию,SIG_IGN
для игнорирования этого сигнала или указателем на функцию обработки сигнала. Эта функция получает номер сигнала в качестве своего единственного аргумента.
Если вы хотите изменить действие какого-либо сигнала на одно из других действий по умолчанию, вы можете вызвать другой сигнал, который выполняет то, что вам нужно (получить дамп ядра или остановить процесс), или просто выйти (завершить процесс).
SIGKILL
и SIGSTOP
это два сигнала, которые вы не можете уловить или заблокировать. sigaction(2)
:
сигнумопределяет сигнал и может быть любым допустимым сигналом, кроме
SIGKILL
иSIGSTOP
.
Сигналы
SIGKILL
невозможноSIGSTOP
уловить, заблокировать или проигнорировать.
Однако игнорирование сигналов, поступающих от реальных неисправностей (неправильный доступ к памяти, неверные инструкции), может привести к тому, что процесс не будет находиться в очень стабильном состоянии.