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