/**************************
* epoll系统调用
*************************/
//穿件内核事件表,返回指向被创建表的文件描述符
//作为其它epoll函数的第一个参数
#include<sys/epoll.h>
int epoll_create(int size)
//epoll_ctl实现对内核事件表的操作
int epoll_ctl(int epfd,int op,int fd,struct epoll_event *event)
/*
struct epoll_event{
__uint32_t events;
epoll_data_t data;
};
typedef union epoll_data{
void* ptr;
int fd;
uint32_t u32;
uint32_t u64;
}epoll_data_t;
*/
//epoll系列系统调用的主要接口
//events指向输出epoll_wait检测到的就绪事件
int epoll_wait(int epfd,struct epoll_event* events,int maxevents,int timeout)
int ret=poll(fds,MAX_EVENT_NUMBER,-1);
for(int i=0;i<MAX_EVENT_NUMBER;++i){
if(fds[i].revents & POLLIN){
int sockfd=fds[i].fd;
/*处理socket*/
}
}
int ret=epoll_wait(epollfd,events,MAX_EVENT_NUMBER,-1);
for(int i=0;i<ret;i++){
int soockfd=event[i].data.fd;
/*直接处理socket*/
}
* epoll系统调用
*************************/
//穿件内核事件表,返回指向被创建表的文件描述符
//作为其它epoll函数的第一个参数
#include<sys/epoll.h>
int epoll_create(int size)
//epoll_ctl实现对内核事件表的操作
int epoll_ctl(int epfd,int op,int fd,struct epoll_event *event)
/*
struct epoll_event{
__uint32_t events;
epoll_data_t data;
};
typedef union epoll_data{
void* ptr;
int fd;
uint32_t u32;
uint32_t u64;
}epoll_data_t;
*/
//epoll系列系统调用的主要接口
//events指向输出epoll_wait检测到的就绪事件
int epoll_wait(int epfd,struct epoll_event* events,int maxevents,int timeout)
int ret=poll(fds,MAX_EVENT_NUMBER,-1);
for(int i=0;i<MAX_EVENT_NUMBER;++i){
if(fds[i].revents & POLLIN){
int sockfd=fds[i].fd;
/*处理socket*/
}
}
int ret=epoll_wait(epollfd,events,MAX_EVENT_NUMBER,-1);
for(int i=0;i<ret;i++){
int soockfd=event[i].data.fd;
/*直接处理socket*/
}