【发布时间】:2018-12-07 21:42:42
【问题描述】:
在 epoll 事件 event.data.fd 中返回的 fd 是否会在每次使用 epoll_wait() 之间始终保持相同的 fd 描述符,并且可以用它来识别每次连接以及与之关联的状态。
【问题讨论】:
-
如果您轮询多个 FD,
event.data.fd可以是其中任何一个。它将是任何一个已经准备好的。 -
听起来您并不真正了解
epoll工作原理的基础知识。当然,FD 会识别连接,它与您用来发送/接收的 FD 相同。 -
man7.org/linux/man-pages/man7/epoll.7.html有一个例子展示了它是如何使用的
-
但是如果 epoll 例如 dup2 的 fd 换成不同的 fd,fd 的确切值会改变吗?特定连接对应的fd的值是否可以随着epoll而改变?
-
我不确定到底会发生什么,但是一些网页警告不要使用带有
epoll的复制描述符,因为轮询与底层文件描述相关联。但是手册页中的常见问题解答表明,如果您在每个 FD 上有不同的投票掩码,这也很有用。