一、epoll使用API接口
#include <sys/epoll.h>
int epoll_create(int size)
函数功能:创建epoll实例
参数:
size:没有实际含义,但是必须填充大于0的值
返回值:
成功返回文件描述符
失败返回-1,置位错误码
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
函数功能:对epoll实例控制
参数:
epfd:epoll_create创建文件描述符
op:操作方法
EPOLL_CTL_ADD:向epoll实例中添加对epoll控制
EPOLL_CTL_MOD:修改epoll实例中对epoll控制
EPOLL_CTL_DEL:删除epoll实例中对epoll控制
fd:被操作的文件描述符,也就是open打开的文件描述符
event:时间结构体
typedef union epoll_data {
void *ptr;
int fd; ============> 被操作的文件描述符
uint32_t u32;
uint64_t u64;
} epoll_data_t;
struct epoll_event {
uint32_t events; /* 事件类型 */ EPOLLIN 可读事件
epoll_data_t data; /* 用户数据 */
};
返回值:
成功返回0
失败返回-1,置位错误码
int epoll_wait(int epfd, struct epoll_event *events,
int maxevents, int timeout)
函数功能:阻塞监听准备好的事件结构体
参数:
epfd:epoll_create创建文件描述符
events:返回准备好的事件结构体
maxevents:监听最大文件描述符个数
timeout:不关心超时,填写-1
返回值:
成功返回准备好的文件描述符个数
失败返回-1,置位错误码