Чтение онлайн

на главную - закладки

Жанры

Linux программирование в примерах
Шрифт:
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

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO

30) SIGPWR 31) SIGSYS 32) SIGRTMIN 33) SIGRTMIN+1

34) SIGRTMIN+2 35) SIGRTMIN+3 36) SIGRTMIN+4 37) SIGRTMIN+5

38) SIGRTMIN+6 39) SIGRTMIN+7 40) SIGRTMIN+8 41) SIGRTMIN+9

42) SIGRTMIN+10 43) SIGRTMIN+11 44) SIGRTMIN+12 45) SIGRTMIN+13

46) SIGRTMIN+14 47) SIGRTMIN+15 48) SIGRTMAX-15 49) SIGRTMAX-14

50) SIGRTMAX-13 51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10

54) SIGRTMAX-9 55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6

58) SIGRTMAX-5 59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2

62) SIGRTMAX-1 63) SIGRTMAX

Сигналы

SIGRTXXX
являются сигналами реального времени, сложная тема, которую мы не будем рассматривать.

10.3.2. Программная отправка сигналов:

raise

Помимо внешнего генерирования, сигнал может быть отправлен непосредственно самой программой с использованием стандартной функции С

raise
:

#include <signal.h> /* ISO С */

int raise(int sig);

Эта функция посылает сигнал

sig
вызывающему процессу. (Это действие имеет свое применение; вскоре мы увидим пример.)

Поскольку

raise
определена стандартом С, для процесса это наиболее переносимый способ отправить себе сигнал. Есть другие способы, которые мы обсудим далее в главе.

10.4. Обработчики сигналов в действии

Множество осложнений и отклонений обнаруживается после установки на место обработчика, после его вызова и впоследствии возвращения.

10.4.1. Традиционные системы

После помещения на место обработчика сигнала ваша программа развивается своим путем. Интересные вещи возникают лишь с появлением сигнала (например, пользователь нажал CTRL-C для прерывания вашей программы, или был сделан вызов

raise
).

Поделиться:
Популярные книги

Ваше Сиятельство 9

Моури Эрли
9. Ваше Сиятельство
Фантастика:
боевая фантастика
попаданцы
стимпанк
аниме
фэнтези
5.00
рейтинг книги
Ваше Сиятельство 9

Наследие Маозари 7

Панежин Евгений
7. Наследие Маозари
Фантастика:
боевая фантастика
юмористическое фэнтези
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 7

Гранит науки. Том 2

Зот Бакалавр
2. Героями не становятся, ими умирают
Фантастика:
фэнтези
5.00
рейтинг книги
Гранит науки. Том 2

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Меченный смертью. Том 4

Юрич Валерий
4. Меченный смертью
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Меченный смертью. Том 4

Ночной администратор

Ле Карре Джон
Детективы:
шпионские детективы
7.14
рейтинг книги
Ночной администратор

Господин Хладов

Шелег Дмитрий Витальевич
4. Кровь и лёд
Фантастика:
аниме
5.00
рейтинг книги
Господин Хладов

Адвокат Империи 12

Карелин Сергей Витальевич
12. Адвокат империи
Фантастика:
городское фэнтези
альтернативная история
аниме
дорама
попаданцы
5.00
рейтинг книги
Адвокат Империи 12

Петля, Кадетский корпус. Книга третья

Алексеев Евгений Артемович
3. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Петля, Кадетский корпус. Книга третья

Адвокат Империи 8

Карелин Сергей Витальевич
8. Адвокат империи
Фантастика:
городское фэнтези
альтернативная история
аниме
дорама
фантастика: прочее
попаданцы
5.00
рейтинг книги
Адвокат Империи 8

Локки 7. Потомок бога

Решетов Евгений Валерьевич
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Локки 7. Потомок бога

Маг

Щепетнов Евгений Владимирович
2. Истринский цикл
Фантастика:
фэнтези
8.57
рейтинг книги
Маг

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

"Новый Михаил-Империя Единства". Компиляцияя. Книги 1-17

Марков-Бабкин Владимир
Избранные циклы фантастических романов
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Новый Михаил-Империя Единства. Компиляцияя. Книги 1-17