epoll_wait() - Unix,Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

epoll_wait() - Unix,Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

epoll_wait - 等待 epoll 文件描述符上的 I/O 事件

语法

#include <sys/epoll.h> 

int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);

描述

epoll文件描述符epfd上等待事件,最多等待timeout毫秒。events指向的内存区域将包含可供调用方使用的事件。epoll_wait(2)最多返回maxevents个事件。

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 events */ epoll_data_t data; /* User data variable */ };

每个返回结构的data将包含用户使用epoll_ctl(2)(EPOLL_CTL_ADD,EPOLL_CTL_MOD)设置的相同数据,而events成员将包含返回的事件位字段。

返回值

成功时,epoll_wait(2)返回准备进行请求的 I/O 的文件描述符数量,如果在请求的timeout毫秒内没有文件描述符准备就绪,则返回零。发生错误时,epoll_wait(2)返回-1,并且errno被相应地设置。

错误

标签描述
EBADF epfd不是有效的文件描述符。
EFAULT events指向的内存区域无法使用写权限访问。
EINTR 在任何请求的事件发生或timeout过期之前,调用被信号处理程序中断。
EINVAL epfd不是epoll文件描述符,或者maxevents小于或等于零。

符合标准

epoll_wait(2)是 Linux 内核 2.5.44 中引入的新 API。该接口应在 Linux 内核 2.5.66 中最终确定。

参见



previous next Printer Friendly

广告


  

广告



广告