一、说明
在实际网络程序中,比如服务器程序,需要使用IO复用机制来处理多个客户端的连接和数据收发。Linux系统下常用的IO复用机制有三种:select、poll、epoll。
poll是Linux中的字符设备驱动中的一个函数。Linux 2.5.44版本后,poll被epoll取代。
select用于监视文件描述符的变化情况
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。
因此,在实际应用中,尤其是大型网络程序中,都是使用epoll这种IO复用机制。
二、epoll机制
2.1 常用API
2.1.1 epoll_create()
#include <sys/epoll.h><