linux2.6内核epoll用法举例说明

linux2.6内核epoll用法举例说明

ID:34724180

大小:70.68 KB

页数:8页

时间:2019-03-10

linux2.6内核epoll用法举例说明_第1页
linux2.6内核epoll用法举例说明_第2页
linux2.6内核epoll用法举例说明_第3页
linux2.6内核epoll用法举例说明_第4页
linux2.6内核epoll用法举例说明_第5页
资源描述:

《linux2.6内核epoll用法举例说明》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、epoll是linux2.6加入的用于I/O事件多路分离的一组函数,这组函数简化了反应式socket服务器的编程,并且很大程度提高了性能。从一定程度上弥补了LINUX内核对异步I/O支持的不足,epoll机制加上非阻塞I/0可以模拟实现异步I/O。本文主要是说明如何使用epoll机制来编写一个echo服务器。epoll用到的所有函数都是在头文件sys/epoll.h中声明的,下面简要说明所用到的数据结构和函数:所用到的数据结构typedefunionepoll_data{void*ptr;intfd;__uint32_tu32;__uint64_tu64;}epoll_data_t;s

2、tructepoll_event{__uint32_tevents;/*Epollevents*/epoll_data_tdata;/*Userdatavariable*/};结构体epoll_event被用于注册所感兴趣的事件和回传所发生待处理的事件,其中epoll_data联合体用来保存触发事件的某个文件描述符相关的数据,例如一个client连接到服务器,服务器通过调用accept函数可以得到于这个client对应的socket文件描述符,可以把这文件描述符赋给epoll_data的fd字段以便后面的读写操作在这个文件描述符上进行。epoll_event结构体的events字段是表

3、示感兴趣的事件和被触发的事件可能的取值为:EPOLLIN:表示对应的文件描述符可以读;EPOLLOUT:表示对应的文件描述符可以写;EPOLLPRI:表示对应的文件描述符有紧急的数据可读(这里应该表示有带外数据到来);EPOLLERR:表示对应的文件描述符发生错误;EPOLLHUP:表示对应的文件描述符被挂断;EPOLLET:表示对应的文件描述符有事件发生;所用到的函数:1、epoll_create函数函数声明:intepoll_create(intsize)该函数生成一个epoll专用的文件描述符,其中的参数是指定生成描述符的最大范围(我觉得这个参数和select函数的第一个参数应该

4、是类似的但是该怎么设置才好,我也不太清楚)。2、epoll_ctl函数函数声明:intepoll_ctl(intepfd,intop,intfd,structepoll_event*event)该函数用于控制某个文件描述符上的事件,可以注册事件,修改事件,删除事件。参数:epfd:由epoll_create生成的epoll专用的文件描述符;op:要进行的操作例如注册事件,可能的取值EPOLL_CTL_ADD注册、EPOLL_CTL_MOD修改、EPOLL_CTL_DEL删除fd:关联的文件描述符;event:指向epoll_event的指针;如果调用成功返回0,不成功返回-13、epo

5、ll_wait函数函数声明:intepoll_wait(intepfd,structepoll_event*events,intmaxevents,inttimeout)该函数用于轮询I/O事件的发生;参数:epfd:由epoll_create生成的epoll专用的文件描述符;epoll_event:用于回传代处理事件的数组;maxevents:每次能处理的事件数;timeout:等待I/O事件发生的超时值;返回发生事件数。例子:

6、h>#include<iostream>

7、="">#include<sys/socket.h

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。