如何区分“监听器”文件描述符和“客户端”文件描述符?
以下是我在manpage示例中看到的内容:
if(events[n].data.fd == listener) {
...
} else {
...
}
'但如果我无法访问listener
该怎么办?
对不起,如果这是一个模糊的问题。我不太确定如何说出来。
答案 0 :(得分:3)
假设您正在编写服务器,您应该将侦听套接字描述符保留在某个变量中(手册页中的listener
),或者为您提供给epoll_ctl(2)
的每个套接字设置一个小结构并使用data.ptr
的{{1}}成员指向它(不要忘记在套接字关闭时取消分配该结构)。
这样的事情:
struct epoll_event
正如您所看到的那样,只需访问服务器套接字描述符就可以了,但它具有很好的特性,可以将所有信息保存在一个地方。