[编辑...]
dup()的NetBSD手册页特别指出...
“ ...引用之间共享除close-on-exec标志以外的所有对象模式,设置,属性和行为。这包括附加模式的设置,非阻塞I / O操作,正在进行异步I / O操作,套接字选项等等。”
所以我想我的回答是,任何重复描述符上的connect()都会同等地影响侦听器描述符和所有其他重复描述符。
[...编辑]
根据connect()上的Linux手册页,可以在UDP描述符上调用它,以默认将数据报发送到和从其发送和接收的对等地址/端口。这也具有性能优势,因为路由查找仅需要发生一次,而不必在发送的每个数据报上进行。
我的问题是当使用来自dup()的重复描述符时,它如何与epoll()交互。这也可能是特定于Linux的。
说我有一个UDP侦听器和多个UDP会话,由对等地址/端口来区分,其中每个会话都有一个侦听器套接字描述符的副本,并在其上调用了connect()。
connect()将仅在重复描述符上默认对等地址/端口,还是将其传递给侦听器描述符?也就是说,每个重复的描述符都可以唯一地默认吗?
如果是这样,那么对于EPOLLIN事件,每个重复的描述符是否会表现得唯一?也就是说,传入的数据报只会在与对等地址/端口关联的重复描述符上触发EPOLLIN吗?
我可能只需要对此进行编码并看一下,但想先提出来,以节省精力。