epoll_wait原型是:
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
选择原型是:
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
请注意,epoll_wait有一个特殊的fd作为第一个参数,其他文件描述符在" events"阵列。
请注意,select不会挑出任何fd;所有这些都在* fds参数中标识。
为什么epoll_wait选择将一个文件描述符作为" special",而不是将其作为events数组中的另一个元素。
这个问题的背景是我正在研究epoll试图决定是否应该使用select重新编码现有的程序。
其中一个程序同时侦听两个网络套接字。我如何决定哪一个能够成为" epfd"?