Сигналы 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
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
10.3. Стандартные сигналы С: signal() и raise()
10.3. Стандартные сигналы С: signal() и raise() Стандарт ISO С определяет первоначальный API управления сигналами V7 и новый API для посылки сигналов. Вы должны использовать их для программ, которым придется работать на не-POSIX системах, или в случаях, когда предоставляемые ISO С API
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
За пределы POSIX: сигналы в сети
За пределы POSIX: сигналы в сети А теперь, «на закуску», посмотрим справочную информацию по системной команде kill (послать сигнал). Вы, должно быть, помните, что в QNX есть дополнительная возможность получить справку по любой команде системы, используя команду # use
Логические функции определения типа переменной
Логические функции определения типа переменной is_scalarПроверяет, является ли переменная простой.Синтаксис:bool is_scalar(mixed var)Возвращает true, если var имеет скалярный тип (чила, строки, логические значения), но не комплексный (массивы или объекты).is_nullПроверяет, является ли
1.5.3. Ошибка Signal 11
1.5.3. Ошибка Signal 11 Возникает при сбое шины памяти вашего компьютера. Это может произойти, если ваше аппаратное обеспечение не поддерживается Linux или драйвер для этого аппаратного обеспечения работает некорректно. Список поддерживаемых аппаратных средств находится по
LOCK SIGNAL
LOCK SIGNAL Параметры в ibconfig V4_LOCK_SIGNAL 16ANY_LOCK_SIGNAL 16
2. Процедуры и функции для переменных строкового типа
2. Процедуры и функции для переменных строкового типа 1. Function Copy(S: String; Index, Count: Integer): String; Возвращает подстроку строки. S – выражение типа String.Index и Count – выражения целого типа. Функция возвращает строку, содержащую Count символов, начинающихся с позиции Index. Если Index больше, чем
5.7. Сигналы реального времени Posix
5.7. Сигналы реального времени Posix За прошедшие годы сигналы в Unix много раз претерпевали революционные изменения.1. Модель сигналов, предлагавшаяся в Unix Version 7 (1978), была ненадежной. Сигналы могли быть потеряны, и процессу было трудно отключить отдельные сигналы при
R.14.6 Функции-члены шаблонов типа
R.14.6 Функции-члены шаблонов типа Функция-член шаблонного класса считается неявной шаблонной функцией, а параметры шаблона типа для ее класса - ее шаблонными параметрами. Приведем пример, в котором описаны три шаблона типа для функции:template‹class T› class vector { T* v; int
Правило 46: Определяйте внутри шаблонов функции, не являющиеся членами, когда желательны преобразования типа
Правило 46: Определяйте внутри шаблонов функции, не являющиеся членами, когда желательны преобразования типа В правиле 24 объясняется, почему только к свободным функциям применяются неявные преобразования типов всех аргументов. В качестве примера была приведена функция
Safe Express
Safe Express Производитель: Safe Soft Corporation (http://www.netsafesoft.com).Статус: бесплатная.Страница для скачивания: http://netsafesoft.com/nss/download.htm.Размер: 1,5 Мбайт.Основным предназначением данной программы является шифрование исходящей почты. Она представляет собой почтовый клиент, работая с которым
Модификаторы типа функции
Модификаторы типа функции Компилятор языка Си поддерживает ряд модификаторов типа функций: pascal, cdecl, interrupt, near, far и huge (модификатор interrupt не реализован в версии 4 СП MSC). Модификаторы рассмотрены в разделе 3.3.3 "Описатели с
Load Fail-Safe Defaults
Load Fail-Safe Defaults Данный пункт предназначен для загрузки отказоустойчивых параметров, позволяющих загрузить операционную систему в нормальном режиме. Используется в случае, если предыдущая конфигурация BIOS содержала параметры, применяющиеся при разгоне комплектующих
11. Строковый тип в Pascal. Процедуры и функции для переменных строкового типа
11. Строковый тип в Pascal. Процедуры и функции для переменных строкового типа Последовательность символов определенной длины называется строкой. Переменные строкового типа определяются путем указания имени переменной, зарезервированного слова string, и возможно, но не