电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

深入理解epoll讲解

深入理解epoll讲解_第1页
1/10
深入理解epoll讲解_第2页
2/10
深入理解epoll讲解_第3页
3/10
深入理解 epoll1、基本知识epoll 是在 2.6 内核中提出的,是之前的select 和 poll 的增强版本。相对于select 和 poll来说, epoll 更加灵活,没有描述符限制。epoll 使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy 只需一次。2、epoll 接口epoll 操作过程需要三个接口,分别如下:[cpp] view plain copy 在 CODE 上查看代码片派生到我的代码片#include int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout); (1) int epoll_create(int size); 创建一个epoll 的句柄, size 用来告诉内核这个监听的数目一共有多大。这个参数不同于 select()中的第一个参数,给出最大监听的fd+1 的值。需要注意的是,当创建好epoll 句柄后,它就是会占用一个fd 值,在 Linux 下如果查看 /proc/进程 id/fd/ ,是能够看到这个fd的,所以在使用完epoll 后,必须调用close()关闭,否则可能导致fd 被耗尽。(2)int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); epoll 的事件注册函数,它不同与select()是在监听事件时告诉内核要监听什么类型的事件 epoll 的事件注册函数, 它不同与 select()是在监听事件时告诉内核要监听什么类型的事件,而是在这里先注册要监听的事件类型。第一个参数是epoll_create() 的返回值, 第二个参数表示动作,用三个宏来表示:EPOLL_CTL_ADD:注册新的fd 到 epfd 中;EPOLL_CTL_MOD:修改已经注册的fd 的监听事件;EPOLL_CTL_DEL :从 epfd 中删除一个fd;第三个参数是需要监听的fd,第四个参数是告诉内核需要监听什么事,struct epoll_event 结构如下:[cpp] view plain copy 在 CODE 上查看代码片派生到我的代码片struct epoll_event { __uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ }; events 可以是以下几个宏的集合:EPOLLIN :表示对应的文件描述符可以读(包括对端SOCKET 正常关闭);EPOLLOUT :表示对应的文件描述符可以写;EPOLLPRI :表示对应的文件描述符有紧急的数据可读(这里应该表示有带外数据到来);...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

深入理解epoll讲解

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部