3.epoll
int epoll_create(int size);
功能:
创建 一张 内核事件表
参数:
size: 事件的 个数
返回值:
成功返回文件描述符
失败返回-1
epoll_ctl
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
功能:
维护 epoll时间表
参数:
epfd: 事件表 的文件描述符
op:
EPOLL_CTL_ADD 添加事件
EPOLL_CTL_MOD 修改事件
EPOLL_CTL_DEL 删除事件
fd:
操作 的文件描述符
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 */
};
返回值:
成功返回0
失败返回-1
epoll_wait
int epoll_wait(int epfd, struct epoll_event *events,
int maxevents, int timeout);
功能:
监听 事件表中 的 事件
参数:
epfd: 文件描述符
events: 存放 实际产生事件 的数组空间 首地址
maxevents: 最多 存放事件 的 个数
timeout: 设定监听的时间(超过该时间 则不再监听)
-1 一直监听直到有事件发生
返回值:
成功返回产生事件的文件描述符个数
失败返回-1
如果时间达到 仍没有事件发生 返回0