которые адресуют процесс, пославший сигнал; если значение 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 | Устройство отключено |
Уже отмечалось, что при получении сигнала от пользовательского процесса структура siginfo_t
содержит дополнительные поля (табл. 2.20).
Таблица 2.20. Дополнительные поля структуры siginfo_t
Значение поля si_signo | Дополнительные поля | Значение |
---|---|---|
SIGILL SIGFPE | caddr_t si_addr | Адрес недопустимой инструкции |
SIGSEGV SIGBUS | caddr_t si_addr | Адрес недопустимой области памяти |
SIGCHLD | pid_t si_pid | Идентификатор дочернего процесса |
int si_status | Код возврата сигнала | |
SIGPOLL | long si_band | Ошибка канала (для модулей STREAMS) |
Установить маску сигналов или получить текущую маску можно с помощью функции
#include
int sigprocmask(int how, sigset_t *set, sigset_t *oset);
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии