어떤 스레드가 SIGURG를 수신합니까?

어떤 스레드가 SIGURG를 수신합니까?

나는 최근 Unix에 관한 "연구 노트"를 작성했으며 다중 스레드 프로세스에 대해 다음과 같은 주장을 했습니다.

"긴급" 비트가 포함된 TCP 패킷을 수신할 때 커널이 SIGURG를 수신해야 하는 스레드를 식별하는 것은 거의 불가능합니다.

단락 3에서섹션 1.1, 이것을 확인하고 싶습니다.

표준은 이에 대한 조항을 제공하지 않으며 전체 TCP URG플래그 MSG_OOBSIGURG구현 및 프로토콜별 콘텐츠를 예약합니다.

하지만 기존 관행은 어떻습니까? 운영 체제 커널이 SIGURGTCP 플래그를 수신하는 소켓 호출에서 차단된 스레드에 메시지를 보내나요? 스레드를 소켓 소유자로 지정할 수 있는 구현이 있습니까? 다른 행동이 있을까요?recv(2)URG

답변1

내가 조사한 3가지 구현인 Darwin, FreeBSD 및 Linux에서 메인 스레드는 신호를 수신합니다. 메인 스레드가 마스크로 이를 차단하면 어떤 스레드도 신호를 수신하지 않습니다.

관련 정보