Linux Man на русском

  User    Syst    Libr    Device    Files    Other    Admin  



   siginterrupt - разрешает сигналам прерывать системные вызовы

siginterrupt(3) разрешает сигналам прерывать системные вызовы


ОБЗОР

#include <signal.h>


int siginterrupt(int sig, int flag);

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

siginterrupt():

_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* начиная с glibc 2.12: */ _POSIX_C_SOURCE >= 200809L


ОПИСАНИЕ

Функция siginterrupt() изменяет поведение перезапуска когда системный вызов прерывается сигналом sig. Если аргумент flag ложен (0), то системные вызова будут перезапускаться, если они прерывались указанным сигналом sig. Это поведение Linux по умолчанию.

Если аргумент flag истинен (1) и не пересылались данные, то системный вызов, прерванный сигналом sig вернёт -1 и errno будет присвоено значение EINTR.

Если аргумент flag истинен (1) и началась пересылка данных, то системный вызов будет прерван и вернёт действительное количество пересланных данных.


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

При успешном выполнении siginterrupt() возвращает ноль. Она возвращает -1, если был указан неправильный номер сигнала sig, ив errno будет указан код ошибки.


ОШИБКИ

EINVAL Задан некорректный номер сигнала.


АТРИБУТЫ

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

Интерфейс Атрибут Значение
siginterrupt() безвредность в потоках: небезопасно (MT-Unsafe const:sigintr)


СООТВЕТСТВИЕ СТАНДАРТАМ

4.3BSD, POSIX.1-2001. В POSIX.1-2008 функция siginterrupt() помечена как устаревшая, вместо неё рекомендуется использовать sigaction(2) с флагом SA_RESTART.