В поле
si_signo
хранится номер сигнала. Поле
si_code
имеет следующий смысл: если его значение меньше или равно нулю, значит сигнал был отправлен прикладным процессом, в этом случае структура
siginfo_t
содержит также следующие поля:
pid_t si_pid
| Идентификатор процесса PID |
uid_t si_uid
| Идентификатор пользователя UID |
которые адресуют процесс, пославший сигнал; если значение
si_code
больше нуля, то оно указывает на причину отправления сигнала. Список возможных значений
si_code
для некоторых сигналов, соответствующих полю
si_signo
, приведен в табл. 2.19
Таблица 2.19. Значения поля si_code структуры siginfo_t для некоторых сигналов
Значение поля si_signo
| Значение поля si_code
| Описание |
SIGILL
| Попытка выполнения недопустимой инструкции |
ILL_ILLOPC
| Недопустимый код операции (opcode) |
ILL_ILLOPN
| Недопустимый операнд |
ILL_ADR
| Недопустимый режим адресации |
ILL_ILLTRP
| Недопустимая ловушка (trap) |
ILL_PRVOPC
| Привилегированный код операции |
ILL_PRVREG
| Привилегированный регистр |
ILL_COPROC
| Ошибка сопроцессора |
ILL_BADSTK
| Ошибка внутреннего стека |
SIGFPE
| Особая ситуация операции с плавающей точкой |
FPE_INTDIV
| Целочисленное деление на ноль |
FPE_INTOVF
| Целочисленное переполнение |
FPE_FLTDIV
| Деление на ноль с плавающей точкой |
FPE_FLTOVF
| Переполнение с плавающей точкой |
FPE_FLTUND
| Потеря точности с плавающей точкой (underflow) |
FPE_FLTRES
| Неоднозначный результат операции с плавающей точкой |
FPE_FLTINV
| Недопустимая операция с плавающей точкой |
FPE_FLTSUB
| Индекс вне диапазона |
SIGSEGV
| Нарушение сегментации |
SEGV_MAPPER
| Адрес не отображается на объект |
SEGV_ACCERR
| Недостаточно прав на отображаемый объект |
SIGBUS
| Ошибка адресации |
BUS_ADRALN
| Недопустимое выравнивание адреса |
BUS_ADRERR
| Несуществующий физический адрес |
BUS_OBJERR
| Аппаратная ошибка, связанная с объектом |
SIGTRAP
| Ловушка |
TRAP_BRKPT
| Процессом достигнута точка останова |
TRAP_TRACE
| Ловушка трассирования процесса |
SIGCHLD
| Завершение выполнения дочернего процесса |
CLD_EXITED
| Дочерний процесс завершил выполнение |
CLD_KILLED
| Дочерний процесс был "убит" |
CLD_DUMPED
| Ненормальное завершение дочернего процесса |
CLD_TRAPPED
| Трассируемый дочерний процесс находится в ловушке |
CLD_STOPPED
| Выполнение дочернего процесса было остановлено |
CLD_CONTINUED
| Выполнение остановленного дочернего процесса было продолжено |
SIGPOLL
| Событие на опрашиваемом устройстве |
POLL_IN
| Поступили данные для ввода |
POLL_OUT
| Свободны буферы данных |
POLL_MSG
| Сообщение ожидает ввода |
POLL_ERR
| Ошибка ввода/вывода |
POLL_PRI
| Высокоприоритетные данные ожидают ввода |
POLL_HUP
| Устройство отключено |