Сигналы Posix: функции типа Async-Signal-Safe

Сигналы Posix: функции типа Async-Signal-Safe

Недостаток пpoгрaммы из листинга 5.8 в том, что она вызывает mq_notify, mq_receive и printf из обработчика сигнала. Ни одну из этих функций вызывать оттуда не следует.

Функции, которые могут быть вызваны из обработчика сигнала, относятся к группе, называемой, согласно Posix, async-signal-safe functions (функции, обеспечивающие безопасную обработку асинхронных сигналов). В табл. 5.1 приведены эти функции по стандарту Posix вместе с некоторыми дополнительными, появившимися только в Unix 98.

Функции, которых нет в этом списке, не должны вызываться из обработчика сигнала. Обратите внимание, что в списке отсутствуют стандартные функции библиотеки ввода-вывода и функции pthread_XXX для работы с потоками. Из всех функций IPC, рассматриваемых в этой книге, в список попали только sem_post, read и write (подразумевается, что последние две используются с программными каналами и FIFO).

ПРИМЕЧАНИЕ

Стандарт ANSI С указывает четыре функции, которые могут быть вызваны из обработчика сигналов: abort, exit, longjmp, signal. Первые три отсутствуют в списке функций async-signal-safe стандарта Unix 98. 

Таблица 5.1. Функции, относящиеся к группе async-signal-safe

access        fpathconf rename      sysconf

aio_return    fstat     rmdir       tcdrain

aio_suspend   fsync     sem_post    tcflow 

alarm         getegid   setgid      tcflush

cfgetispeed   geteuid   setpgid     tcgetattr

cfgetospeed   getgid    setsid      tcgetgrp

cfsetispeed   getgroups setuid      tcsendbreak

cfsetospeed   getpgrp   sigaction   tcsetattr

chdir         getpid    sigaddset   tcsetpgrp

chmod         getppid   sigdelset   time

chown         getuid    sigemptyset timer_getoverrun

clock_gettime kill      sigfillset  timer_gettime

close         link      sigismember timer_settime

creat         lseek     signal      times

dup           mkdir     sigpause    umask

dup2          mkfifo    sigpending  uname

execle        open      sigprocmask unlink

execve        pathconf  sigqueue    utime

_exit         pause     sigset      wait

fcntl         pipe      sigsuspend  waitpid

fdatasync     raise     sleep       write

fork          read      stat

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2. Процедуры и функции для переменных строкового типа

Из книги Информатика и информационные технологии: конспект лекций автора Цветкова А В

2. Процедуры и функции для переменных строкового типа 1. Function Copy(S: String; Index, Count: Integer): String; Возвращает подстроку строки. S – выражение типа String.Index и Count – выражения целого типа. Функция возвращает строку, содержащую Count символов, начинающихся с позиции Index. Если Index больше, чем


11. Строковый тип в Pascal. Процедуры и функции для переменных строкового типа

Из книги Информатика и информационные технологии автора Цветкова А В

11. Строковый тип в Pascal. Процедуры и функции для переменных строкового типа Последовательность символов определенной длины называется строкой. Переменные строкового типа определяются путем указания имени переменной, зарезервированного слова string, и возможно, но не


Load Fail-Safe Defaults

Из книги Собираем компьютер своими руками автора Ватаманюк Александр Иванович

Load Fail-Safe Defaults Данный пункт предназначен для загрузки отказоустойчивых параметров, позволяющих загрузить операционную систему в нормальном режиме. Используется в случае, если предыдущая конфигурация BIOS содержала параметры, применяющиеся при разгоне комплектующих


Safe Express

Из книги 200 лучших программ для Интернета. Популярный самоучитель автора Краинский И

Safe Express Производитель: Safe Soft Corporation (http://www.netsafesoft.com).Статус: бесплатная.Страница для скачивания: http://netsafesoft.com/nss/download.htm.Размер: 1,5 Мбайт.Основным предназначением данной программы является шифрование исходящей почты. Она представляет собой почтовый клиент, работая с которым


R.14.6 Функции-члены шаблонов типа

Из книги Справочное руководство по C++ автора Страустрап Бьярн

R.14.6 Функции-члены шаблонов типа Функция-член шаблонного класса считается неявной шаблонной функцией, а параметры шаблона типа для ее класса - ее шаблонными параметрами. Приведем пример, в котором описаны три шаблона типа для функции:template‹class T› class vector { T* v; int


Правило 46: Определяйте внутри шаблонов функции, не являющиеся членами, когда желательны преобразования типа

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

Правило 46: Определяйте внутри шаблонов функции, не являющиеся членами, когда желательны преобразования типа В правиле 24 объясняется, почему только к свободным функциям применяются неявные преобразования типов всех аргументов. В качестве примера была приведена функция


5.7. Сигналы реального времени Posix

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

5.7. Сигналы реального времени Posix За прошедшие годы сигналы в Unix много раз претерпевали революционные изменения.1. Модель сигналов, предлагавшаяся в Unix Version 7 (1978), была ненадежной. Сигналы могли быть потеряны, и процессу было трудно отключить отдельные сигналы при


Логические функции определения типа переменной

Из книги Справочник по PHP автора

Логические функции определения типа переменной is_scalarПроверяет, является ли переменная простой.Синтаксис:bool is_scalar(mixed var)Возвращает true, если var имеет скалярный тип (чила, строки, логические значения), но не комплексный (массивы или объекты).is_nullПроверяет, является ли


Модификаторы типа функции

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Модификаторы типа функции Компилятор языка Си поддерживает ряд модификаторов типа функций: pascal, cdecl, interrupt, near, far и huge (модификатор interrupt не реализован в версии 4 СП MSC). Модификаторы рассмотрены в разделе 3.3.3 "Описатели с


1.5.3. Ошибка Signal 11

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

1.5.3. Ошибка Signal 11 Возникает при сбое шины памяти вашего компьютера. Это может произойти, если ваше аппаратное обеспечение не поддерживается Linux или драйвер для этого аппаратного обеспечения работает некорректно. Список поддерживаемых аппаратных средств находится по


За пределы POSIX: сигналы в сети

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

За пределы POSIX: сигналы в сети А теперь, «на закуску», посмотрим справочную информацию по системной команде kill (послать сигнал). Вы, должно быть, помните, что в QNX есть дополнительная возможность получить справку по любой команде системы, используя команду # use


10.3. Стандартные сигналы С: signal() и raise()

Из книги Linux программирование в примерах автора Роббинс Арнольд

10.3. Стандартные сигналы С: signal() и raise() Стандарт ISO С определяет первоначальный API управления сигналами V7 и новый API для посылки сигналов. Вы должны использовать их для программ, которым придется работать на не-POSIX системах, или в случаях, когда предоставляемые ISO С API


10.3.1. Функция signal()

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич


10.6. Сигналы POSIX

Из книги автора

10.6. Сигналы POSIX API POSIX основан на API sigvec() из BSD 4.2 и 4.3. С небольшими изменениями этот API можно было отнести к возможностям API как V7, так и System V Release 3. POSIX сделал эти изменения и переименовал API sigaction(). Поскольку интерфейс sigvec() широко не использовался, мы не будем его описывать.


12.6.2. Функции POSIX: random() и srandom()

Из книги автора

12.6.2. Функции POSIX: random() и srandom() BSD 4.3 ввело random() и сопровождающие ее функции. Эти функции используют намного более подходящий генератор случайных чисел, который возвращает 31-разрядное значение. Теперь они входят в расширение XSI, стандартизованное POSIX:#include <stdlib.h> /* XSI */long


LOCK SIGNAL

Из книги автора

LOCK SIGNAL Параметры в ibconfig V4_LOCK_SIGNAL 16ANY_LOCK_SIGNAL 16