|
SSIGNAL(3C)
НАЗВАНИЕ
ssignal, gsignal - программный вариант механизма сигналов
СИНТАКСИС
#include <signal.h>
int (*ssignal (sig, action)) ( )
int sig, (*action) ( );
int gsignal (sig)
int sig;
ОПИСАНИЕ
Функции ssignal и gsignal представляют собой программную реализацию механизма передачи сигналов, похожего на
тот, что обеспечивается системным вызовом signal(2).
Эти функции используются стандартной библиотекой языка
C, чтобы предоставить пользователю возможность нестандартной обработки ошибочных ситуаций. Функции ssignal и
gsignal можно использовать и в иных целях.
Программные сигналы, доступные пользователю, обозначаются целыми числами от 1 до 16 включительно. Выполнение
функции ssignal ассоциирует действие, action, с программным сигналом sig; возбуждение сигнала sig осуществляется функцией gsignal. Возбуждение сигнала приводит к выполнению ассоциированного с ним действия.
В качестве первого аргумента функции ssignal передается
число, идентифицирующее сигнал, для которого требуется
установить действие. Второй аргумент определяет это
действие; оно может быть задано как именем функции (определенной пользователем), так и одной из констант
SIG_DFL (стандартное действие) или SIG_IGN (игнорирование). Функция ssignal возвращает указатель на функцию,
определяющую предыдущее действие, установленное для
этого сигнала; если нет ранее установленного действия
или номер сигнала некорректен, то возвращается константа SIG_DFL.
Функция gsignal возбуждает сигнал, заданный аргументом
sig, при этом:
- Если для обработки сигнала sig была установлена
пользовательская функция, то сначала восстанавливается стандартная реакция на возбужденный сигнал,
а затем вызывается пользовательская функция с аргументом sig. Функция gsignal возвращает значение,
переданное ей пользовательской функцией обработки
сигнала.
- Если действием для сигнала sig является SIG_IGN,
(сигнал игнорируется), то функция gsignal возвращает 1 и не предпринимает каких-либо других действий.
- Если действием для сигнала sig является SIG_DFL
(стандартная реакция), то функция gsignal возвращает 0 и не предпринимает каких-либо других действий.
- Если номер сигнала sig не является корректным или
для сигнала sig не специфицировано действие, то
функция gsignal возвращает значение 0 и не предпринимает каких-либо других действий.
СМ. ТАКЖЕ
signal(2), sigset(2).
ПРИМЕЧАНИЯ
Есть несколько дополнительных сигналов с номерами, выходящими за пределы интервала от 1 до 16. Они используются функциями из стандартной библиотеки языка C для
указания ошибочных ситуаций. В результате некоторые номера сигналов за пределами интервала от 1 до 16 являются допустимыми, хотя их использование может конфликтовать с функциями из стандартной библиотеки языка C.
|
|