如何使用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