Существуют ли какие-либо сигналы, для которых нельзя переопределить обработчик сигналов по умолчанию?

Существуют ли какие-либо сигналы, для которых нельзя переопределить обработчик сигналов по умолчанию?

Я думаю, что сигналы Linux работают следующим образом:

У каждого процесса есть обработчик сигналов по умолчанию для каждого сигнала. Для некоторых сигналов обработчик сигналов по умолчанию завершает процесс, а для других сигналов обработчик сигналов по умолчанию просто игнорирует сигнал и т. д.

В следующей таблице показаны все действия, которые может выполнять обработчик сигналов по умолчанию (эта таблица взята из этогодокументация):

Срок Действие по умолчанию — завершение процесса.

Игн Действие по умолчанию — игнорировать сигнал.

Основной Действие по умолчанию — завершение процесса и сброс ядра (см. core(5)).

Останавливаться Действие по умолчанию — остановка процесса.

Продолжение Действие по умолчанию — продолжить процесс, если он в данный момент остановлен.

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

Я прав?

Теперь мой вопрос: есть ли сигналы, для которых нельзя переопределить обработчик сигналов по умолчанию?

решение1

Обе страницы руководства, на которые вы ссылаетесь, упоминают сигналы, обработчики которых не могут быть переопределены.signal(2):

Сигналы SIGKILLневозможно SIGSTOPуловить или проигнорировать.

В sigaction(2):

сигнумопределяет сигнал и может быть любым допустимым сигналом, кроме SIGKILLи SIGSTOP.

Связанный контент