哪个线程接收 SIGURG?

哪个线程接收 SIGURG?

最近写了一篇关于Unix的“学习笔记”,对多线程进程提出了如下主张:

当收到带有“紧急”位的 TCP 数据包时,内核几乎不可能识别应该接收 SIGURG 的线程

在第3段中第 1.1 节,我想核实一下这一点。

该标准对此没有做出任何规定,并保留了整个 TCPURG标志、MSG_OOB以及SIGURG特定于实现和协议的内容。

但现有的做法又如何呢?操作系统内核是否会向接收 TCP 标志的套接字上的调用SIGURG中阻塞的线程发送消息?是否有能够将线程指定为套接字所有者的实现?还会有其他行为吗?recv(2)URG

答案1

在我调查的 3 个实现上,Darwin、FreeBSD 和 Linux,主线程接收信号。如果主线程用掩码阻止它,则没有线程接收到信号。

相关内容