FTA
- 1 year ago
- 0
- 0
В POSIX -системах SIGPOLL — сигнал , посылаемый процессу для информирования об изменении состояния выполняющегося в фоне асинхронного ввода-вывода.
SIGPOLL — целочисленная константа, определенная в заголовочном файле
signal.h
. Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.
Сигнал SIGIO в Linux является синонимом SIGPOLL .
SIG
— общий
префикс
сигналов (от
англ.
signal
),
POLL
— сокращенное написание
англ.
polling
— опрос, в контексте системного вызова
poll
,
IO
— сокращение
англ.
I/O (input-output)
— ввод-вывод.
Согласно POSIX, SIGPOLL — сигнал по умолчанию, посылаемый при изменении состояния открытого файла (например, готовности к вводу или выводу), для которого системным вызовом
ioctl
был установлен флаг I_SETSIG. Используя этот механизм, программа может осуществлять асинхронный ввод-вывод без необходимости дополнительного мультиплексирования, которое необходимо при использовании функции
select()
. Возможным минусом данного метода является потеря непрерывности в коде программы и превращения его в нечитабельное
«спагетти»
, с потенциальной возможностью возникновения ошибок типа
race condition
.
POSIX 1003.1 (
2003 год
) рекомендует использование стандартизированных системных вызовов для асинхронного ввода-вывода, определяемых заголовочным файлом
aio.h
. Всем запросы на ввод-вывод с использованием этих функций ставятся в очередь для асинхронного выполнения, их результаты и состояние могут быть получены через функции
aio_return()
и
aio_error()
.