Linux는 System V 규칙을 따르고 기본적으로 SIGIO에서 종료됩니까?

Linux는 System V 규칙을 따르고 기본적으로 SIGIO에서 종료됩니까?

"유닉스 네트워크 프로그래밍"이라는 책에 이런 말이 있습니다:

소켓 소유자를 설정하기 전에 신호 처리기를 빌드해야 합니다. Berkeley 파생 구현에서는 기본 작업이 SIGIO를 무시하는 것이므로 두 함수 호출의 순서는 중요하지 않습니다. 따라서 두 함수 호출의 순서를 바꾸면 fcntl을 호출한 후 신호가 생성될 가능성이 적지만, 이런 일이 발생하면 신호가 삭제됩니다. 그러나 SVR4에서는 SIGIO가 헤더에 SIGPOLL로 정의되어 있으며 SIGPOLL의 기본 동작은 프로세스를 종료하는 것입니다. 따라서 SVR4에서는 소켓 소유자를 설정하기 전에 신호 처리기가 설치되어 있는지 확인하려고 합니다.

Linux 커널 문서에서는 signal.hSystem V 이후의 POSIX 동작이 참조됩니다.코멘트로:

*   +--------------------+------------------+
 *  |  POSIX signal      |  default action  |
 *  +--------------------+------------------+
 *  |  SIGHUP            |  terminate   |
 *  |  SIGINT            |  terminate   |
   ....
 *  |  SIGPROF           |  terminate   |
 *  |  SIGPOLL/SIGIO     |  terminate   |
 *  |  SIGSYS/SIGUNUSED  |  coredump    |
 *  |  SIGSTKFLT         |  terminate   |
   .... etc.

하지만 이 정책이 실제로 구현된 소스는 어디에서도 찾을 수 없습니다. SIGIO를 SIGPOLL과 동일하게 설정하는 방정식은 없는 것 같습니다. 그렇다면 Linux는 Berkeley 동작을 따르나요, 아니면 System V 동작을 따르나요?

답변1

관련 정보