SIGPOLL
В POSIX-системах SIGPOLL — сигнал, посылаемый процессу для информирования об изменении состояния выполняющегося в фоне асинхронного ввода-вывода.
SIGPOLL — целочисленная константа, определенная в заголовочном файле signal.h. Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.
Сигнал SIGIO в Linux является синонимом SIGPOLL.
Общие сведения
| SIGPOLL | |
|---|---|
| Описание | Сигнал асинхронного ввода-вывода |
| По умолчанию | завершение процесса |
| Коды SA_SIGINFO | |
| POLL_IN | доступен ввод |
| POLL_OUT | возможен вывод |
| POLL_MSG | доступно новое сообщение |
| POLL_ERR | ошибка ввода-вывода |
| POLL_PRI | высокоприоритетный ввод |
| POLL_HUP | соединение закрыто |
Этимология
Использование
Согласно POSIX, SIGPOLL — сигнал по умолчанию, посылаемый при изменении состояния открытого файла (например, готовности к вводу или выводу), для которого системным вызовом ioctl был установлен флаг I_SETSIG. Используя этот механизм, программа может осуществлять асинхронный ввод-вывод без необходимости дополнительного мультиплексирования, которое необходимо при использовании функции select(). Возможным минусом данного метода является потеря непрерывности в коде программы и превращения его в нечитабельное «спагетти», с потенциальной возможностью возникновения ошибок типа race condition.
POSIX 1003.1 (2003 год) рекомендует использование стандартизированных системных вызовов для асинхронного ввода-вывода, определяемых заголовочным файлом aio.h. Всем запросы на ввод-вывод с использованием этих функций ставятся в очередь для асинхронного выполнения, их результаты и состояние могут быть получены через функции aio_return() и aio_error().