Шрифт:
Таблица 10.1. Сигналы GNU/Linux
Имя | Значение | По умолчанию | Источник | Смысл |
---|---|---|---|---|
SIGHUP | 1 | Term | POSIX | Отсоединение |
SIGINT | 2 | Term | ISO C | Прерывание |
SIGQUIT | 3 | Core | POSIX | Выход |
SIGILL | 4 | Core | ISO C | Недействительная инструкция |
SIGTRAP | 5 | Core | POSIX | Трассировочная ловушка |
SIGABRT | 6 | Core | ISO C | Прекращение |
SIGIOT | 6 | Core | BSD | Ловушка IOT |
SIGBUS | 7 | Core | BSD | Ошибка шины |
SIGFPE | 8 | Core | ISO C | Исключение с плавающей точкой |
SIGKILL | 9 | Term | POSIX | Завершение, неблокируемый |
SIGUSR1 | 10 | Term | POSIX | Сигнал 1 пользователя |
SIGSEGV | 11 | Core | ISO C | Нарушение сегмента |
SIGUSR2 | 12 | Term | POSIX | Сигнал 2 пользователя |
SIGPIPE | 13 | Term | POSIX | Нарушенный канал |
SIGALRM | 14 | Term | POSIX | Аварийные часы |
SIGTERM | 15 | Term | ISO C | Завершение |
SIGSTKFLT | 16 | Term | Linux | Ошибка стека в процессоре (не используется) |
SIGCHLD | 17 | Ignr | POSIX | Изменение статуса порожденного процесса |
SIGCLD | 17 | Ignr | System V | То же, что и SIGCHLD (для совместимости) |
SIGCONT | 18 | POSIX | Продолжить при остановке | |
SIGSTOP | 19 | Stop | POSIX | Стоп, неблокируемый |
SIGTSTP | 20 | Stop | POSIX | Стоп от клавиатуры |
SIGTTIN | 21 | Slop | POSIX | Фоновое чтение от tty |
SIGTTOU | 22 | Stop | POSIX | Фоновая запись в tty |
SIGURG | 23 | Ignr | BSD | Срочный сигнал сокета |
SIGXCPU | 24 | Core | BSD | Превышение предела процессора |
SIGXFSZ | 25 | Core | BSD | Превышение предела размера файла |
SIGVTALRM | 26 | Term | BSD | Виртуальные аварийные часы |
SIGPROF | 27 | Term | BSD | Профилирующие аварийные часы |
SIGWINCH | 28 | Ignr | BSD | Изменение размера окна |
SIGIO | 29 | Term | BSD | Возможен ввод/вывод |
SIGPOLL | 29 | Term | System V | Опрашиваемое событие, то же, что и SIGIO (для совместимости) |
SIGPWR | 30 | Term | System V | Повторный запуск из-за сбоя питания |
SIGSYS | 31 | Core | POSIX | Неверный системный вызов |
Обозначения: Core: Завершить процесс и создать снимок образа процесса Ignr: Игнорировать сигнал Stop: Остановить процесс. Term: Завершить процесс.
Более старые версии оболочки Борна (
/bin/sh
) непосредственно связывали с номерами сигналов ловушки (traps), которые являются обработчиками сигналов на уровне оболочки. Таким образом, всесторонне образованному Unix-программисту нужно было знать не только имена сигналов для использования в коде С, но также и соответствующие номера сигналов! POSIX требует, чтобы команда trap
понимала символические имена сигналов (без префикса 'SIG
'), поэтому этого больше не требуется. Однако (главным образом для лучшего разбирательства), мы предоставили эти номера в интересах полноты из-за того, что однажды вам может понадобиться иметь дело со сценарием оболочки, созданным до POSIX, или с древним кодом на С, которые непосредственно используют номера сигналов. ЗАМЕЧАНИЕ. Для некоторых более новых сигналов, от 16 и выше, соответствующие номера сигнала и их имена на различных платформах не обязательно совпадают! Проверьте заголовочные файлы и справочные страницы на своей системе. Табл. 10.1 верна для GNU/Linux
Некоторые системы определяют также и другие сигналы, такие, как
SIGEMT
, SIGLOST
и SIGINFO
. Справочная страница GNU/Linux signal(7) предоставляет полный список; если ваша программа должна обработать сигналы, не поддерживаемые GNU/Linux, это можно сделать с помощью #ifdef
:
#ifdef SIGLOST
/* ...обработать здесь SIGLOST... */
#endif
За исключением
SIGSTKFLT
, сигналы, перечисленные в табл. 10.1, широкодоступны и не нуждаются в заключении в #ifdef
. Сигналы
SIGKILL
и SIGSTOP
нельзя перехватить или игнорировать (или блокировать, как описано далее в главе). Они всегда выполняют действие по умолчанию, указанное в табл. 10.1. Чтобы увидеть список поддерживаемых сигналов, вы можете использовать '
kill -l
'. На одной из наших систем GNU/Linux:
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ