在epoll事件event.data.fd中返回的fd是否始终在每次使用epoll_wait()之间保持相同的fd描述符,并且它可以用于每次识别该连接以及与之关联的状态。
文档非常清楚地解释了这一点:
每个返回结构的数据字段包含与最近调用
epoll_ctl
(2)(EPOLL_CTL_ADD
,EPOLL_CTL_MOD
)中指定的相应打开文件描述相同的数据。
所以event.data.fd
的返回值将是你在event.data.fd
最后一次打开文件描述时为epoll_ctl
指定的值。除非你弄乱fork
或dup
,并在两个描述符上使用epoll
,否则这将是epoll_ctl
对该文件描述符的最后一次调用。