C/signal.h
signal.h — заголовочный файл, определенный в стандартной библиотеке языка Си, для указания того, как программа обрабатывает сигналы во время ее выполнения. Сигнал может оповещать о некотором отклонении от ожидаемого поведения программы (как например, деление на нуль) или о некоторых асинхронных событиях, произошедших вне программы (например, если кто-то нажал кнопку прерывания программы на клавиатуре).
Сигнал может генерироваться при вызове raise (посылает сигнал текущему процессу) или kill (посылает сигнал любому процессу). Каждая реализация определяет какой сигнал что генерирует и определяет их генерацию. реализация может определять сигналы, отличающиеся от перечисленных здесь. Стандартный заголовочный файл <signal.h> может определять дополнительные макросы с именами, начинающимися с SIG, для указания значения этих дополнительных сигналов. Все подобные значения являются целыми константными выражениями >= 0.
Можно указывать обработчик сигнала для всех сигналов кроме двух (SIGKILL и SIGSTOP не могут быть перехвачены, блокированы или проигнорированы). Обработчик сигнала — функция, направляющая вызовы окружению, когда принимает соответствующий сигнал. Целевое окружение приостанавливает выполнение программы пока обработчик сигнала не возвратит значение или вызовет переход (longjmp). Для максимальной переносимости, асинхронный обработчик сигнала должен:
совершать (успешный) вызов сигнала функции присваивать значения объектам с типом несвязанная переменная sig_atomic_t возвращать управление обратно вызвавшему его Если сигнал оповещает об ошибке внутри программы (а сигнал не асинхронный), то обработчик сигнала может завершить ее выполнение, вызвав abort, exit или longjmp.
Содержание
Методы
- raise. Искусственно вызывает сигнал.
- psignal, выводит в stderr строку, содержащую номер сигнала. Применяется в 4.3BSD, Solaris и Linux, но не указан в POSIX и SUS. На тех же системах string.h содержит нестандартный strsignal, который работает аналогично strerror.
- signal - назначает действие, предпринимаемое при получении программой сигнала sig. Если значение func равно SIG_DFL, то происходит обработка по умолчанию для указанного сигнала. Если значение func равно SIG_IGN, то сигнал игнорируется. В остальных случаях func указывает на вызываемую функцию обработчик сигнала при получении сигнала.
Функция func может завершиться выполнением операции возврата или вызовом функций самозавершения, выхода или перехода.
Члены-типы
typedef i-type sig_atomic_t
Члены-макросы
- SIG_DFL — Используется для указания способа обработки сигнала по умолчанию.
- SIG_IGN — Используется для игнорирования сигнала.
- SIG_ERR — Код ошибки.
Члены-константы
Константа | Значение | Стандарты | |
---|---|---|---|
SIGHUP | Отбой | POSIX | |
SIGINT | Прерывание | ANSI | |
SIGQUIT | Выход | POSIX | |
SIGILL | Недопустимая инструкция | ANSI | |
SIGABRT | Самоостановка | ANSI | |
SIGTRAP | Перехват события | POSIX | |
SIGIOT | Перехват ввода-вывода | 4.2 BSD | |
SIGEMT | Перехват эмуляции | 4.2 BSD | |
SIGFPE | Исключение с плавающей запятой | ANSI | |
SIGKILL | Неперехватываемый сигнал завершения | POSIX | |
SIGBUS | Ошибка шины | 4.2 BSD | |
SIGSEGV | Нарушение сегментации | ANSI | |
SIGSYS | Неправильный аргумент в системный вызов | 4.2 BSD | |
SIGPIPE | Нарушение канала | POSIX | |
SIGALRM | Истечение времени | POSIX | |
SIGTERM | Завершение | ANSI | |
SIGUSR1 | Пользовательский сигнал 1 | POSIX | |
SIGUSR2 | Пользовательский сигнал 2 | POSIX | |
SIGCHLD | Изменение статуса дочернего процесса | POSIX | |
SIGCLD | Аналогично SIGCHLD | System V | |
SIGPWR | Перезапуск после проблемы с питанием | System V | |
SIGXCPU | Ограничение процессорного времени | POSIX |