#define SIGIO SIGPOLL
• SIGPROF [29]
— сигнал профилирующего таймера (profiling timer expired). Как и сигнал SIGALRM
, этот сигнал возбуждается по истечении времени таймера (но это другой таймер), который используется для измерения времени выполнения процесса в пользовательском и системном режимах (таймер устанавливается заданием первого параметра setitimer()
, равным ITIMER_PROF
).
• SIGQUIT (-) [3]
— выход из процесса (quit).
• SIGSEGV (+) [11]
— обращение к некорректному адресу памяти, ошибка защиты памяти, нарушение границ сегмента памяти (invalid memory reference, segmentation violation).
• SIGSTOP [23]
— временная остановка процесса (sendable stop signal not from tty). Если пользователь вводит с терминала [Ctrl+Z], то активному процессу посылается этот сигнал и процесс приостанавливается. Позже процесс может быть возобновлен с точки остановки при получении сигнала SIGCONT
. Этот сигнал нельзя проигнорировать или перехватить.
• SIGSYS (+) [12]
— некорректный системный вызов (invalid system call, bad argument to system call).
• SIGTERM [15]
— программный сигнал завершения (software termination signal from kill). Программист может использовать этот сигнал для того, чтобы дать процессу время для «наведения порядка», прежде чем посылать ему сигнал SIGKILL
. Именно этот сигнал посылается по умолчанию командой kill
без параметра, указывающего сигнал.
• SIGTRAP [5]
— сигнал трассировочного прерывания (trace trap). Это особый сигнал, который в сочетании с системным вызовом ptrace()
используется отладчиками: sdb, adb, gdb. По умолчанию сигнал приводит к аварийному завершению. Обработка сигнала не сбрасывается, когда он перехватывается.
• SIGTSTP [24]
— терминальный сигнал остановки (terminal stop signal). Генерируется при нажатии специальной комбинации остановки [Ctrl+Z]. Аналогичен сигналу SIGSTOP
, но, в отличие от последнего, может быть перехвачен или проигнорирован.
• SIGTTIN [26]
— остановка фонового процесса, если он пытается прочитать данные со своего управляющего терминала (background process attempting read).
• SIGTTOU [27]
— остановка фонового процесса, если он пытается писать данные на свой управляющий терминал (background process attempting write).
• SIGURG [21]
— сигнал о поступлении в буфер сокета срочных (приоритетных) данных (high bandwidth data is available at a socket, urgent condition on I/O channel) уведомляет процесс, что по открытому им сетевому соединению получены внеочередные данные.
• SIGUSR1 [16]
, SIGUSR2 [17]
— зарезервированные сигналы пользователя. Для этих сигналов предопределенной реакцией в QNX является завершение процесса (хотя естественнее ожидать, и так это предлагает POSIX, реакцию «игнорировать сигнал»), и реакцию на них должен определять пользователь. Так же как и сигнал SIGTERM
, эти сигналы никогда не посылаются системой.
• SIGVTALRM [28]
— сигнал виртуального таймера (virtual timer expired). Подобно SIGPROF
и SIGALRM
, этот сигнал возбуждается по истечении времени таймера (это третий из доступных таймеров), который измеряет время процессора только в пользовательском режиме (таймер устанавливается заданием первого параметра setitimer()
, равным ITIMER_VIRTUAL
).
• SIGXCPU [30]
— сигнал о превышении лимита процессорного времени (CPU time limit exceeded). Посылается процессу при исчерпании им ранее установленного лимита процессорного времени. Действие по умолчанию — аварийное завершение.
• SIGXFSZ [31]
— сигнал о превышении предела, установленного на размер файла (file size limit exceeded). Действие по умолчанию — аварийное завершение.
• SIGWINCH [20]
— сигнал, который генерируется (в консольном режиме pterm
и xterm
эмулируют его вручную при изменении их размеров) при изменении размера окна (window size change) для запущенного в окне приложения (mc, mqc…), чтобы оно перерисовало свой экран вывода.
Примечание
В QNX определено еще два специфических сигнала, которые вряд ли должны представлять для нас интерес:
• SIGIOT [6]
— IOT-инструкция; никогда не генерируется для платформы x86.
• SIGPWR [19]
— сигнал power-fail restart о котором в технической документации QNX ничего не говорится, но в преамбуле, описывающей нововведения версии 6.2.1, сказано: «corrected SIGPWR to SIGTERM», то есть этот сигнал, очевидно, — рудимент прежних версий системы.
Примечание
POSIX допускает, что не все сигналы могут быть реализованы. Более того, допускается ситуация, когда некоторое символическое имя сигнала определено, но сам сигнал отсутствует в системе (изменения такого рода вполне могут наблюдаться при переходе от одной версии QNX к другой). Для диагностики реального наличия сигнала можно воспользоваться рекомендацией, приведенной в информативной части стандарта POSIX 1003.1: наличие поддержки сигнала сообщает вызов функции sigaction()
с аргументами act
и oact
, установленными в NULL
. Приведем простейший тест ( файл s1.cc ), реализующий рекомендацию POSIX в QNX 6.2.1:
Читать дальше
Конец ознакомительного отрывка
Купить книгу