如何停止epoll_wait?

How to stop epoll_wait?

我刚开始在 Linux 中编码,需要使用 epoll 在此处移植我的 Win 服务器代码。 我不知道如何停止 epoll_wait.

epoll 循环在单独的线程中运行,主函数处理控制台命令。输入 "quit" 命令后,我需要停止服务器。简单地关闭主套接字没有任何效果。那么在这种情况下如何正确停止 epoll(可能会导致所有线程出现 epoll_wait 到 return 错误)?

通常,您将一个特殊的文件描述符放在 epoll 文件描述符列表中。 eventfd or a pipe 是不错的候选人。每当您需要中断 epoll_wait 时,您都会向该文件描述符发出信号,并在事件处理循环中检查该文件描述符作为循环退出条件。