![어떤 스레드가 SIGURG를 수신합니까?](https://linux55.com/image/187925/%EC%96%B4%EB%96%A4%20%EC%8A%A4%EB%A0%88%EB%93%9C%EA%B0%80%20SIGURG%EB%A5%BC%20%EC%88%98%EC%8B%A0%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
나는 최근 Unix에 관한 "연구 노트"를 작성했으며 다중 스레드 프로세스에 대해 다음과 같은 주장을 했습니다.
"긴급" 비트가 포함된 TCP 패킷을 수신할 때 커널이 SIGURG를 수신해야 하는 스레드를 식별하는 것은 거의 불가능합니다.
단락 3에서섹션 1.1, 이것을 확인하고 싶습니다.
표준은 이에 대한 조항을 제공하지 않으며 전체 TCP URG
플래그 MSG_OOB
와 SIGURG
구현 및 프로토콜별 콘텐츠를 예약합니다.
하지만 기존 관행은 어떻습니까? 운영 체제 커널이 SIGURG
TCP 플래그를 수신하는 소켓 호출에서 차단된 스레드에 메시지를 보내나요? 스레드를 소켓 소유자로 지정할 수 있는 구현이 있습니까? 다른 행동이 있을까요?recv(2)
URG
답변1
내가 조사한 3가지 구현인 Darwin, FreeBSD 및 Linux에서 메인 스레드는 신호를 수신합니다. 메인 스레드가 마스크로 이를 차단하면 어떤 스레드도 신호를 수신하지 않습니다.