![신호와 이벤트 간의 연결은 어떻게 생성, 삭제, 수정, 활성화 및 비활성화됩니까?](https://linux55.com/image/184736/%EC%8B%A0%ED%98%B8%EC%99%80%20%EC%9D%B4%EB%B2%A4%ED%8A%B8%20%EA%B0%84%EC%9D%98%20%EC%97%B0%EA%B2%B0%EC%9D%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%83%9D%EC%84%B1%2C%20%EC%82%AD%EC%A0%9C%2C%20%EC%88%98%EC%A0%95%2C%20%ED%99%9C%EC%84%B1%ED%99%94%20%EB%B0%8F%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
Linux에서는 일부 관련 이벤트가 발생할 때 많은 신호가 생성됩니다.
신호와 이벤트 간의 연결은 어떻게 생성, 삭제, 수정, 활성화 및 비활성화됩니까? (바람직하게는 API)
커널에서 사용하는 신호와 사용자 정의 신호가 있습니까? 다르게 처리됩니까?
답변1
"신뢰할 수 있는" 및 "실시간" 신호 생성, 전달 및 기본 처리는POSIX에 의해 지정됨. 사양은 어떤 이벤트가 어떤 신호를 생성하는지 정의합니다. 리눅스신호를 추가해다른 Unix 시스템의 레거시 신호에 해당합니다. 이벤트와 신호 간의 연관성을 추가, 제거 또는 수정하려면 운영 체제에서 이를 구현한 다음 POSIX가 작성된 Austin Group에 사례를 제기해야 합니다.
신호 생성, 전송 및 처리를 제어하는 데 사용할 수 있는 API는 광범위합니다. 자세한 내용은 위 링크를 참조하세요. 이들 중 일부는 신호가 처리되는 방식(기본 작업, 무시 또는 특정 핸들러)을 제어하지만 이벤트와 신호 자체 간의 상관 관계는 제어하지 않습니다. 따라서 부동 소수점 예외는 항상 발생하며 SIGFPE
다른 방법으로 처리할 수 있습니다. 다른 경우에는 프로세스에서 SIGFPE
수동으로 문제를 제기할 수도 있지만 SIGFPE
부동 소수점 예외 간의 연결을 비활성화할 수는 없습니다.
일부 신뢰할 수 있는 신호는 사용자 정의 목적을 위해 설계되었습니다 SIGUSR1
. SIGUSR2
이러한 신호에 해당하는 미리 설정된 이벤트는 없지만 미리 설정된 작업(수신 프로세스 종료)이 있습니다. 어떤 이벤트가 이러한 신호 중 하나를 생성하는지 결정하는 것은 생성 프로세스에 달려 있습니다. 특정 상황에서 이러한 신호를 자동으로 생성하도록 커널에 지시할 수 있는 방법은 없습니다. (BPF 프로그램은 신호를 보낼 수 있으므로 신호 생성 코드가 커널에서 호스팅될 수 있지만 이는 완전히 동일한 것은 아닙니다.)
실시간 신호는 모두 사용자가 정의합니다. 사용자 정의 신뢰할 수 있는 신호와 마찬가지로 기본적으로 수신 프로세스를 종료합니다.
두 번째 질문은 이미다양한 신호가 전송되는 원인은 무엇입니까?