Provided by: manpages-ru-dev_4.18.1-1_all bug

ИМЯ

       sigset, sighold, sigrelse, sigignore - программный интерфейс сигналов System V

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <signal.h>

       typedef void (*sighandler_t)(int);

       sighandler_t sigset(int sig, sighandler_t disp);

       int sighold(int sig);
       int sigrelse(int sig);
       int sigignore(int sig);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       sigset(), sighold(), sigrelse(), sigignore():
           _XOPEN_SOURCE >= 500

ОПИСАНИЕ

       Данные   функции   предоставляются  glibc  для  совместимости  с  программами,  в  которых
       используются старый программный интерфейс сигналов System V. Данный программный  интерфейс
       устарел:  в  новых  приложениях  нужно  использовать  программный интерфейс сигналов POSIX
       (sigaction(2), sigprocmask(2) и т.п.).

       Функция sigset() изменяет обработку сигнала sig. В аргументе disp может быть указан  адрес
       функции обработчика сигнала или одна из следующих констант:

       SIG_DFL
              Сбросить обработку sig в значение по умолчанию.

       SIG_IGN
              Игнорировать sig.

       SIG_HOLD
              Добавить sig в маску сигналов процесса, но оставить обработку sig неизменной.

       Если  в  disp  задан  адрес  обработчика сигналов, то при его выполнении sig добавляется в
       маску сигналов процесса.

       Если в disp было указано значение отличное от SIG_HOLD, то sig удаляется из маски сигналов
       процесса.

       Обработку сигналов SIGKILL и SIGSTOP невозможно изменить.

       Функция sighold() добавляет sig в маску сигналов вызвавшего процесса.

       Функция sigrelse() удаляет sig из маски сигналов вызвавшего процесса.

       Функция sigignore() устанавливает обработку sig равной SIG_IGN.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При успешном выполнении sigset() возвращает SIG_HOLD, если sig был заблокирован до вызова,
       или предыдущий обработчик сигнала, если блокировки не было. При ошибке sigset() возвращает
       -1, а errno записывает номер ошибки (но смотрите раздел ДЕФЕКТЫ далее).

       При  успешном  выполнении  функции  sighold(),  sigrelse() и sigignore() возвращают 0; при
       ошибке возвращается -1, а в errno — номер ошибки.

ОШИБКИ

       Для функции sigset() смотрите раздел ОШИБКИ в sigaction(2) и sigprocmask(2).

       Для функции sighold() и sigrelse() смотрите раздел ОШИБКИ в sigprocmask(2).

       Для функции sigignore() смотрите раздел ОШИБКИ в sigaction(2).

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌───────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ИнтерфейсАтрибутЗначение │
       ├───────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │sigset(), sighold(), sigrelse(), sigignore()           │ Безвредность в нитях │ MT-Safe  │
       └───────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       Существует в SVr4, POSIX.1-2001, POSIX.1-2008. Эти функции устарели: не используйте  их  в
       новых программах. В POSIX.1-2008 функции sighold(), sigignore(), sigpause(3), sigrelse() и
       sigset() помечены как устаревшие,  вместо  них  рекомендуется  использовать  sigaction(2),
       sigprocmask(2), pthread_sigmask(3) и sigsuspend(2).

ЗАМЕЧАНИЯ

       These functions appeared in glibc 2.1.

       Тип  sighandler_t  является  расширением  GNU;  в этой странице он используется только для
       более понятного описания прототипа sigset().

       Функция sigset() предоставляет семантику  надёжной  обработки  сигналов  (как  при  вызове
       sigaction(2) с значением sa_mask равным 0).

       В   System  V,  функция  signal()  предоставляет  ненадёжную  семантику  (как  при  вызове
       sigaction(2) со значением sa_mask равным  SA_RESETHAND  |  SA_NODEFER).  В  BSD,  signal()
       предоставляет  надёжную  семантику.  В  POSIX.1-2001  эти  аспекты signal() не определены.
       Подробности смотрите в signal(2).

       Для ожидания сигналов в BSD и System V предоставляется функция sigpause(3),  но  в  других
       системах она описана с другим аргументом. Подробности смотрите в sigpause(3).

ДЕФЕКТЫ

       Before  glibc  2.2,  sigset()   did not unblock sig if disp was specified as a value other
       than SIG_HOLD.

       Before glibc 2.5, sigset()  does not correctly return  the  previous  disposition  of  the
       signal  in two cases.  First, if disp is specified as SIG_HOLD, then a successful sigset()
       always returns SIG_HOLD.  Instead, it should return the previous disposition of the signal
       (unless  the  signal  was blocked, in which case SIG_HOLD should be returned).  Second, if
       the signal is currently blocked, then the return value of a successful sigset()  should be
       SIG_HOLD.   Instead,  the  previous disposition of the signal is returned.  These problems
       have been fixed since glibc 2.5.

СМ. ТАКЖЕ

       kill(2),  pause(2),  sigaction(2),  signal(2),  sigprocmask(2),   raise(3),   sigpause(3),
       sigvec(3), signal(7)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства   был   сделан   Alexander   Golubev
       <fatzer2@gmail.com>,  Azamat  Hackimov  <azamat.hackimov@gmail.com>,   Hotellook,   Nikita
       <zxcvbnm3230@mail.ru>,       Spiros       Georgaras       <sng@hellug.gr>,       Vladislav
       <ivladislavefimov@gmail.com>,   Yuri   Kozlov   <yuray@komyakino.ru>   и    Иван    Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.