Provided by:
manpages-ru_0.98-4_all 
НАЗВАНИЕ
poll - ожидание разнообразных событий на файловом дескрипторе
КРАТКАЯ СВОДКА
#include <sys/poll.h>
int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
ОПИСАНИЕ
poll является вариацией на тему select. Здесь задается массив из nfds
структур типа
struct pollfd {
int fd; /* файловый дескриптор */
short events; /* запрошенные события */
short revents; /* возвращенные события */
};
и timeout в миллисекундах. Отрицательное значение означает бесконечный
тайм-аут. Поле fd содержит файловый дескриптор открытого файла. Поле
events-- входной параметр, указывающий битовую маску событий,
интересующих приложение. Поле revents-- выходной параметр, куда ядро
помещает информацию о произошедших событиях: запрошенных или событий
типа POLLERR, POLLHUP или POLLNVAL. (Эти три битовых флага не имеют
смысла при использовании в поле events и будут установлены в поле
revents, если соответствующее условие истинно.) Если ни одно из
запрошенных событий (или ошибок) не случилось, то ядро ждет их
появления до тайм-аута. Вот возможные биты, описанные в <sys/poll.h>:
#define POLLIN 0x0001 /* Можно читать данные */
#define POLLPRI 0x0002 /* Есть срочные данные */
#define POLLOUT 0x0004 /* Запись не будет блокирована */
#define POLLERR 0x0008 /* Произошла ошибка */
#define POLLHUP 0x0010 /* "Положили трубку" */
#define POLLNVAL 0x0020 /* Неверный запрос: fd не открыт */
В <asm/poll.h> также определены значения POLLRDNORM, POLLRDBAND,
POLLWRNORM, POLLWRBAND и POLLMSG.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном завершении возвращается положительное значение, равное
количеству структур с ненулевыми полями revents (другими словами,
дескрипторы с обнаруженными событиями или ошибками). Нуль означает,
что системный вызов вышел по тайм-ауту, и ни один из файловых
дескрипторов не был выбран. При ошибке возвращается -1, а errno
устанавливается в соответствующее значение.
ОШИБКИ
ENOMEM Не хватило памяти для создания таблицы файловых дескрипторов.
EFAULT Массив, переданный в качестве аргумента, не находится в адресном
пространстве вызывающей программы.
EINTR До появления запрошенного события произошел сигнал.
СООТВЕТСТВИЕ СТАНДАРТАМ
XPG4-UNIX.
ДОСТУПНОСТЬ
Системный вызов poll() появился в Linux 2.1.23. Библиотечный вызов
poll() появился в libc 5.4.28 (использует эмуляцию с помощью select(2),
если в вашем ядре нет системного вызова poll(2).
СМОТРИ ТАКЖЕ
select(2)
ПЕРЕВОД
Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 2000