如何使用epoll创建延迟执行的代码或超时事件? libevent和libev都具有功能,但是我不知道如何使用epoll做到这一点。

当前,主循环如下所示:

epoll_ctl(epfd, EPOLL_CTL_ADD, client_sock_fd, &epev);

while(1) {
    int nfds = epoll_wait(epfd, &epev, 1, 10);
    if (nfds < 0) exit(EXIT_FAILURE);
    if (nfds > 0) {
        // If an event has been recieved
    }
    // Do this every 10ms
}


我很清楚,可以通过简单地添加多少时间来实现此功能,但是使用epoll似乎是一种更干净的解决方案。

最佳答案

您可以创建timerfd并将文件描述符添加到epoll_wait

10-06 02:07