int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
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 не открыт */
При компилировании исходников XPG4.2 также имеется:
#ifdef _XOPEN_SOURCE
#define POLLRDNORM 0x0040 /* Данные можно считывать */
#define POLLRDBAND 0x0080 /* Можно считывать приоритетные данные */
#define POLLWRNORM 0x0100 /* Теперь запись не будет блокироваться */
#define POLLWRBAND 0x0200 /* Можно записывать приоритетные данные */
#endif
Наконец, Linux знает об:
#ifdef _GNU_SOURCE
#define POLLMSG 0x0400
#endif
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |