int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout)
ОПИСАНИЕ
Ожидает события на описателе файлов
epoll
-
epfd
максимум в течении
timeout
миллисекунд. Область памяти, на которую указывает
events
будет содержать события, доступные для вызываемого.
Может быть возвращено до
maxevents
событий от
epoll_wait(2).
Параметр
maxevents
должен быть больше нуля. Указание
timeout
равным -1 заставит
epoll_wait(2)
ожидать события бесконечно, а указание
timeout
равного нулю заставит
epoll_wait(2)
завершать работу немедленно, если нет доступных событий
(код возврата в этом случае равен нулю).
Структура
struct epoll_event
определена так:
typedef union epoll_data {
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
} epoll_data_t;
struct epoll_event {
__uint32_t events; /* события epoll */
epoll_data_t data; /* переменные данных пользователя */
};
Данные
data
каждой возвращаемой структуры будет содержать
те же данные, что устанавливал пользователь с помощью
epoll_ctl(2)
(EPOLL_CTL_ADD,EPOLL_CTL_MOD)
в то время как члены
events
будут содержать возвращаемый бит поля событий.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При нормальном завершении
epoll_wait(2)
вовзращает число описателей файлов, готовых для запрошенной операции
ввода/вывода, или ноль при отсутствии готовых описателей файлов
во время указанных
timeout
миллисекунд.
При ошибках
epoll_wait(2)
возвращает -1 и устанавливает
errno
соответственно ошибке.
НАЙДЕННЫЕ ОШИБКИ
EBADF
epfd
не является корректным описателем файла.
EINVAL
Переданный описатель файла
epfd,
не является описателем файла
epoll
или параметр
maxevents
меньше или равен нулю.
EFAULT
Область памяти, на которую указывает
events
недоступна на запись (нет прав).
СООТВЕТСТВИЕ СТАНДАРТАМ
epoll_wait(2)
является новым API, представленным в ядре Linux 2.5.44.
Интерфейс должен стать окончательно завершенным к ядру Linux 2.5.66.