epoll_wait - 等待在 epoll 文件描述符的I/O事件
内容简介
#includeint epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout)
描述
Wait for events on the%uA0epoll%uA0file descriptor%uA0epfd%uA0for a maximum time of%uA0timeoutmilliseconds. The memory area pointed to by%uA0events%uA0will contain the events that will be available for the caller. Up to%uA0maxevents%uA0are returned by%uA0epoll_wait(2).
The%uA0maxevents%uA0parameter must be greater than zero. Specifying a%uA0timeout%uA0of -1 makesepoll_wait(2) wait indefinitely, while specifying a%uA0timeout%uA0equal to zero makesepoll_wait(2) to return immediately even if no events are available (return code equal to zero).
struct epoll_event%uA0的定义如下 :
typedef union epoll_data { void *ptr int fd __uint32_t u32 __uint64_t u64 } epoll_data_t struct epoll_event { __uint32_t events /* Epoll events */ epoll_data_t data /* User data variable */ }
The%uA0data%uA0of each returned structure will contain the same data the user set with a%uA0epoll_ctl(2)%uA0(EPOLL_CTL_ADD,EPOLL_CTL_MOD)%uA0while the%uA0events%uA0member will contain the returned event bit field.
返回值
When successful,%uA0epoll_wait(2) returns the number of file descriptors ready for the requested I/O, or zero if no file descriptor became ready during the requested%uA0timeoutmilliseconds. When an error occurs,%uA0epoll_wait(2) returns -1 and%uA0errno%uA0is set appropriately.
错误
标签 | 描述 |
---|---|
EBADF | epfd%uA0is not a valid file descriptor. |
EFAULT | The memory area pointed to by%uA0events%uA0is not accessible with write permissions. |
EINTR | The call was interrupted by a signal handler before any of the requested events occurred or the%uA0timeout%uA0expired. |
EINVAL | epfd%uA0is not an%uA0epoll%uA0file descriptor, or%uA0maxevents%uA0is less than or equal to zero. |
遵循于
epoll_wait(2) is a new API introduced in Linux kernel 2.5.44. The interface should be finalized by Linux kernel 2.5.66.