mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

SIGSET(2)                                             SIGSET(2)

НАЗВАНИЕ 
        sigset, sighold, sigrelse, sigignore, sigpause - управ-
        ление сигналами

СИНТАКСИС 
        #include 
        
        void (*sigset (sig, func)) ( )
        int sig;
        void (*func) ( );
        
        int sighold (sig)
        int sig;
        
        int sigrelse (sig)
        int sig;
        
        int sigignore (sig)
        int sig;
        
        int sigpause (sig)
        int sig;

ОПИСАНИЕ 
        Перечисленные системные вызовы составляют механизм  уп-
        равления сигналами для прикладных процессов.

        Системный вызов sigset аналогичен  вызову  signal(2)  с
        одним важным дополнением: sigset позволяет  откладывать
        сигналы. Ниже описаны только отличия sigset от signal.

        Аргумент func, помимо SIG_DFL, SIG_IGN и  адреса  функ-
        ции, может принимать еще одно значение:

        SIG_HOLD - откладывание сигнала 
             При получении сигнала sig он будет отложен. Если в
             момент обращения к sigset уже существовал отложен-
             ный сигнал sig, он остается  таковым.  Может  быть
             отложен только один сигнал каждого типа -  осталь-
             ные пропадают.

        При  установлении   стандартной   реакции   на   сигнал
        (SIG_DFL) ранее отложенный сигнал  sig  (если  он  был)
        становится активным.

        При установлении режима игнорирования сигнала (SIG_IGN)
        ранее отложенный сигнал sig (если он был) пропадает.

        При установлении режима перехвата сигнала (когда в  ка-
        честве аргумента func выступает  адрес  функции)  ранее
        отложенный сигнал sig (если он был)  становится  актив-
        ным. Адрес функции обработки сигнала  сохраняется  сис-
        темными вызовами, описанными ниже.

        После получения сигнала, но перед вызовом функции обра-
        ботки устанавливается режим откладывания (SIG_HOLD). Во
        время нормального возврата из этой функции она  восста-
        навливается в качестве обработчика [это еще одно  отли-
        чие от signal(2)], а ранее отложенный сигнал sig  (если
        он был) становится активным. Если выход из функции  об-
        работки  осуществлялся   нелокальным   переходом   [см.
        setjmp(3C)], для восстановления специфицированной поль-
        зователем реакции на сигнал и  активизации  отложенного
        сигнала следует воспользоваться описанным ниже  систем-
        ным вызовом sigrelse.

        Системные вызовы sighold и  sigrelse  используются  для
        обрамления критического интервала. Sighold устанавлива-
        ет для сигнала sig режим откладывания; sigrelse восста-
        навливает реакцию на сигнал sig, специфицированную  об-
        ращением к sigset, и  активизирует  отложенный  сигнал,
        если он был.

        Системный вызов sigignore устанавливает режим игнориро-
        вания сигнала sig. Если отвлечься от возвращаемого зна-
        чения, вызов sigignore (sig) эквивалентен sigset  (sig,
        SIG_IGN).

        Системный вызов sigpause аналогичен  pause(2)  с  одним
        отличием: при наличии отложенного сигнала sig он  акти-
        визируется и выполняется его обработка, после чего  вы-
        зывающий процесс продолжает  работу.  Данный  системный
        вызов полезен при проверке значений переменных, изменя-
        емых функцией обработки сигнала. Рекомендуется  сначала
        посредством sighold  заблокировать  сигнал  sig,  затем
        проверить значения переменных. Если они не были измене-
        ны, с помощью sigpause следует дождаться сигнала.

СМ. ТАКЖЕ 
        pause(2), signal(2), setjmp(3C).

ДИАГНОСТИКА 
        И  в  смысле  возвращаемого  значения  системный  вызов
        sigset аналогичен вызову signal.

        При успешном завершении системных вызовов, отличных  от
        sigset, результат равен 0; в случае ошибки возвращается
        -1, а переменной errno присваивается код ошибки.

ПРЕДОСТЕРЕЖЕНИЯ 
        Не следует использовать системные  вызовы  signal(2)  и
        pause(2) совместно с описанными в данной статье средст-
        вами.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк