epoll_create 创建一个新的 epoll 实例,返回指向该实例的描述符 epollfd 用来调用所有 epoll 相关接口。在内核中创建了一个数据,这个数据中有两个比较重要的数据,一个是需要检测的文件描述符的信息(红黑树),还有一个是就绪列表存放检测到数据发生改变的文件描述符信息(双向链表)。

当 epollfd 不再使用时,需要调用 close () 关闭,当指向 epoll 的文件描述符关闭后内核会摧毁 epoll 实例并释放相关资源。

epoll_ctl: 将哪个客户端 fd 的哪些事件 event 交给哪个 epoll (epollfd) 来管理(增删改)

什么时候将就绪的客户端 fd 添加到就绪事件链表? 当内核监听到有就绪事件中断时就会将就绪事件从红黑树迁移一份到就绪事件链表