执行流程:
1、创建监听 socket,并绑定、监听;
2、调用 epoll_create() , 创建 epollfd 代理;
3、将想要监听的 listenfd,通过 epoll_ctl() , 挂载到 epollfd 上,让 epollfd 代理监听;
4、在一个 while 循环中,调用 epoll_wait(), 程序阻塞在这里,等待客户端连接到来;
5、当某个客户端连接到来,epoll_wait() 第一次返回的是接受连接的 listenfd, 调用 accept 函数接受连接,将 accpet 返回的 connfd,挂载到 epollfd 上,继续让代理监听 connfd 的读写事件;
6、当再次到达 5 时,如果是接受连接的 listenfd,那么继续 accept, 如果是读写事件,则进行 7, 接受或发送数据。
https://www.jianshu.com/p/1395fc8bddb9