• SIGTTOU — этот сигнал похож на SIGTTIN, но используется при попытке фонового задания осуществить вывод на управляющий терминал. При работе в оболочке, управляющей заданием, с включенным (возможно, посредством команды stty tostop) параметром терминала TOSTOP (остановка вывода на терминал), драйвер терминала отправляет сигнал SIGTTOU группе фоновых процессов при попытке записи (write()) в терминал (см. подраздел 34.7.1). По умолчанию данный сигнал останавливает процесс.

• 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) — Закончилось время профилирующего таймера — + — Заверш.

Перейти на страницу:

Похожие книги