Rechercher une page de manuel
poll
Langue: ru
Version: 7 декабря 1997 (fedora - 25/11/07)
Section: 2 (Appels système)
Sommaire
НАЗВАНИЕ
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> 2000Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre