Вы не должны SIG_IGN
- пропустить эти сигналы, если вы ожидаете, что ядро их сгенерирует.
Вы можете поймать их с помощью sigaction
и SA_SIGINFO
в .sa_flags
и использовать SA_SIGINFO
, чтобы затем вы могли использовать info->si_code
в обработчике, чтобы различать отправленные ядром и отправленные пользователем варианты.
Если вы затем ничего не делаете в обработчике, если сигнал не был отправлен ядром, и завершаете работу / прекращаете работу, если это так, то с обработчиком SA_RESTART
вы в основном получаете эмуляцию пользовательского пространства SIG_IGN
, которая также работает с ядром. -ссылка SISGEV
, SIGILL
и т. д.
Если вы используете реальный SIG_IGN
, вы должны позаботиться о том, чтобы яд не генерировал эти сигналы (нет недействительных ссылок на память, недопустимых инструкций и т. Д.).
Я думаю, что POSIX позволяет вам безопасно игнорировать SIGFPE
, SIGILL
, SIGSEGV
или SIGBUS
просто потому, что нет веских оснований категорически запрещать игнорировать эти сигналы при любых обстоятельствах, но я не думаю, что есть в противном случае большое значение имеет особенность.