Linux c++(socket网络通信 & epoll)

epoll
  • 三个函数:
    • 该函数生成一个epoll专门的文件描述符

    • int epoll_creae(int size);

      • size: epoll上能关注的最大描述符数
    • 用于控制某个epoll文件描述符事件,可以注册,修改,删除

    • int epoll_ctl(int epfd,int op,int fd,struct epoll_event* event);

      • epfd: epoll_create生成的epoll专用描述符
      • op:
        • EPOLL_CTL_ADD ---注册
        • EPOLL_CTL_MOD ---修改
        • EPOLL_CTL_DEL ---删除
      • fd: 关联的文件描述符
      • event: 告诉内核要监听什么事件
        • EPOLLIN -读
        • EPOLLOUT -写
        • EPOLLERR -异常
    • 等待IO事件发生-可以设置阻塞的函数

    • int epoll_wait(
      int epfd, //要检测的句柄
      struct epoll_event* events, //用于回传待处理事件的数组
      int maxevnets, //告诉内核这个events的大小
      int timeout); //为超时时间 -1:永久阻塞 0:立即返回 >0:等待的时长毫秒
      对应select和poll函数
      struct epoll_event 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_data_t data;
}
上一篇:谈谈Linux网络编程


下一篇:IO学习笔记(bio,nio,aio的区别 select,poll,epoll的区别)【三】