3

对于使用创建的绑定并连接(到未绑定的对等方)套接字socket(AF_UNIX, SOCK_SEQPACKET, 0),有没有办法检测远程端已挂起,而不使用pollPOLLHUP将设置标志),select(由于某种原因,出现在写入 fd 集中),还是类似的?

与 不同SOCK_STREAM,0 长度的有效负载是有效的,并且与流的末尾无法区分(据我所知;在调用recvmsg远程端调用的套接字时,我不断得到 0 长度的块shutdownclose)。struct msghdr此外,在连接结束的信号中没有任何已知的(对我而言)可见的标志。我在 Linux 内核源net/unix/af_unix.c:unix_seqpacket_recvmsg代码(-ENOTCONNSOCK_DGRAM

请注意,使用recvmsg而不是recv,recvfrom等很重要,因为我需要检查MSG_TRUNC.

4

0 回答 0