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-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |