• SIGTTOU — этот сигнал похож на SIGTTIN, но используется при попытке фонового задания осуществить вывод на управляющий терминал. При работе в оболочке, управляющей заданием, с включенным (возможно, посредством команды stty tostop) параметром терминала TOSTOP
• SIGUNUSED — как можно понять из имени, данный сигнал не применяется. Во многих архитектурах начиная с версии Linux 2.4 данный сигнал синонимичен SIGSYS. Иными словами, во многих архитектурах данный сигнал более не является неиспользуемым, однако имя этого сигнала сохраняется для гарантии обратной совместимости.
• SIGURG — этот сигнал отправляется в процесс для указания наличия на сокете доступных для чтения срочных данных (см. подраздел 57.13.1).
• SIGUSR1 — этот сигнал вместе с SIGUSR2 доступен для целей, определяемых программистом. Ядро никогда не генерирует эти сигналы для процесса. Процессы могут использовать их для оповещения друг друга о свершении событий или для синхронизации друг с другом. В ранних реализациях UNIX это были единственные два сигнала, которые можно было свободно задействовать в приложениях. (На самом деле процессы могут отправлять друг другу любые сигналы, однако это может привести к путанице, если ядро также генерирует один из этих сигналов для процесса.) В современных реализациях UNIX предоставляется широкий спектр сигналов реального времени, которые также доступны для целей, определяемых программистом (см. раздел 22.8).
• SIGUSR2 — см. описание сигнала SIGUSR1.
• SIGVTALRM — ядро генерирует этот сигнал по окончании времени виртуального таймера, установленного вызовом функции setitimer() (см. раздел 23.1) Виртуальный таймер — это таймер, отсчитывающий время ЦПУ, затраченное процессом в режиме пользователя.
• SIGWINCH — в оконной среде данный сигнал отправляется группе приоритетных процессов при изменении размеров окна терминала (как следствие ручного изменения размеров окна пользователем или программного изменения размеров с помощью вызова функции ioctl(), как описано в разделе 58.9). Благодаря установке обработчика этого сигнала такие программы, как vi или less, могут узнать о необходимости перерисовать вывод после изменения размеров окна.
• SIXCPU — данный сигнал направляется процессу по исчерпании выделенного ему времени ЦПУ (константа RLIMIT_CPU описывается в разделе 36.3).
• SIGXFSZ — этот сигнал направляется процессу при попытке (с помощью функций write() или truncate()) увеличить размер файла за пределы ресурса процесса (константа RLIMIT_FSIZE описывается в разделе 36.3).
В табл. 20.1 приводятся обобщенные сведения о сигналах в Linux. Обратите внимание на следующие детали об информации в таблице.
• В столбце «Номер сигнала» представлен номер, присвоенный данному сигналу в различных аппаратных архитектурах. Если не указано иное, сигналы имеют один и тот же номер во всех архитектурах. Архитектурные различия в номерах сигналов даются в скобках и встречаются в архитектурах Sun SPARC и SPARC64 (S), HP/Compaq/Digital Alpha (A), MIPS (M) и HP PA-RISC (P). В этом столбце приписка «н/опр» означает, что для данной архитектуры символ не определен.
• Столбец «SUSv3» показывает, стандартизирован ли сигнал по системе SUSv3.
• Столбец «По умолчанию» содержит информацию о действии сигнала по умолчанию. Условное обозначение «Заверш.» говорит о том, что сигнал завершает процесс, «Ядро» — что процесс создает файл дампа ядра и завершается, «Игнор.» — что сигнал игнорируется, «Стоп» означает, что сигнал останавливает процесс, а «Прод.» — что возобновляет остановленный процесс.
Некоторые из перечисленных ранее сигналов в табл. 20.1 не приводятся: SIGCLD (синоним SIGCHLD), SIGINFO (не используется), SIGIOT (синоним SIGABRT), SIGLOST (не используется) и SIGUNUSED (синоним SIGSYS во многих архитектурах).
Таблица 20.1. Сигналы Linux
Имя — Номер сигнала — Описание — SUSv3 — По умолчанию
SIGABRT — 6 — Аварийно завершить процесс — + — Ядро
SIGALRM — 14 — Время таймера реального времени истекло — + — Заверш.
SIGBUS — 7 (SAMP=10) — Ошибка доступа к памяти — + — Ядро
SIGCHLD — 17 (SA=20, MP=18) — Дочерний процесс завершен или остановлен — + — Игнор.
SIGCONT — 18 (SA=19, M=25, P=26) — Продолжить, если завершен — + — Прод.
SIGEMT — н/опр (SAMP=7) — Аппаратная ошибка — Заверш.
SIGFPE — 8 — Арифметическое исключение — + — Ядро
SIGHUP — 1 — Потеря соединения — + — Заверш.
SIGILL — 4 — Недопустимая инструкция — + — Ядро
SIGINT — 2 — Прерывание с терминала — + — Заверш.
SIGIO/SIGPOLL — 29 (SA=23, MP=22) — Возможен ввод/вывод — + — Заверш.
SIGKILL — 9 — Императивное завершение — + — Заверш.
SIGPIPE — 13 — Нарушенный канал — + — Заверш.
SIGPROF — 27 (M=29, P=21) — Закончилось время профилирующего таймера — + — Заверш.