bsd_signal -
обрабатывает
сигналы
согласно
семантике BSD
Standard C library (
libc,
-lc)
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t bsd_signal(int signum, sighandler_t handler);
bsd_signal():
Since glibc 2.26:
_XOPEN_SOURCE >= 500
&& ! (_POSIX_C_SOURCE >= 200809L)
glibc 2.25 and earlier:
_XOPEN_SOURCE
Функция
bsd_signal()
ожидает те
же
аргументы
и
выполняет
ту же
задачу, что
и
signal(2).
Различие
между ними
в том, что
bsd_signal()
гарантированно
предоставляет
надёжную
семантику
сигналов,
то есть: a)
обработчик
сигнала не
сбрасывается
в значение
по
умолчанию,
при его
вызове; b)
доставка
последующих
экземпляров
сигнала
блокируется
до тех пор,
пока
выполняется
обработчик
сигнала; c)
если
обработчик
сигнала
прерывает
блокирующий
системный
вызов, то
системный
вызов
автоматически
перезапускается.
Переносимое
приложение
не может
полагаться
на
signal(2), если
ему нужны
такие
гарантии.
Функция
bsd_signal()
возвращает
предыдущее
значение
обработчика
сигнала
или
SIG_ERR при
ошибке.
Как в
signal(2).
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
bsd_signal() |
Безвредность
в нитях |
MT-Safe |
4.2BSD и POSIX.1-2001. В POSIX.1-2008
спецификация
bsd_signal() удалена,
вместо неё
рекомендуется
использовать
sigaction(2).
Избегайте
использования
bsd_signal(),
используйте
вместо неё
sigaction(2).
В
современных
Linux-системах
bsd_signal() и
signal(2)
эквивалентны.
Однако на
старых
системах
signal(2)
предоставляет
ненадежную
семантику
сигналов.
Подробности
см. в
signal(2).
Используемый
параметр
sighandler_t
является
расширением
GNU; данный тип
определён
только в
том случае,
если
определён
макрос
_GNU_SOURCE.
sigaction(2),
signal(2),
sysv_signal(3),
signal(7)
Русский
перевод
этой
страницы
руководства
был сделан
Artyom Kunyov <
[email protected]>, Azamat Hackimov
<
[email protected]>, Dmitriy Ovchinnikov
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
ITriskTI <
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]