왜 사용자 정의 신호가 두 개입니까?


11

Linux 시스템에서 정의 된 신호 목록에는 사용자 정의 신호 ( SIGUSR1SIGUSR2) 로 표시된 두 가지 신호가 있습니다 . 특정 상황에서는 다른 신호가 발생하거나 포착되지만 SIGUSR은 사용자 응용 프로그램에서 사용할 수 있습니다.

왜 두 신호 만?

답변:


13

역사적으로, 유닉스는이 두 신호를했지만, 현대의 시스템은 실시간으로 신호를 SIGRTMIN... SIGRTMAX.

신호 API의 엉뚱하고 이식 불가능한 의미로 인해 파이프와 같은 다른 통신 메커니즘보다 신호를 선호하는 유스 케이스는 거의 없습니다. 따라서, 새로운 신호 번호를 할당하는 것이 필요하다고 보지 못했습니다.


감사. 내 경우에는 재구성을 위해 SIGUSR1을 처리합니다. 관리자가 실행중인 프로세스의 구성을 변경하려고 할 때 구성 파일을 변경하고 SIGUSR1을 내 PID로 보냅니다 (여기서는 파이프를 사용하는 것이 더 쉽습니다). 그리고 깨끗한 프로세스 종료를 위해 SIGUSR2를 사용합니다. 이 두 가지 이외의 신호를 사용할 필요는 없었지만 다른 사용자 정의 신호를 처리하여 일부 런타임 기능을 구현할 수 있습니다!
saeedn September

2
@saeedn 클린 프로세스 종료를 위해 SIGTERM을 사용하지 않는 이유는 무엇입니까? 그게 다야. 다른 많은 서버는 SIGHUP (대화식 프로세스에서만 의미가있는)을 구성 파일을 다시로드하기위한 신호로 사용하므로이를 고려할 수 있습니다.
Random832

@ Random832 당신 말이 맞아요, 당신이 무슨 말을하는지 알아요. 그러나 내가 생각한 문제는 31 가지의 신호 중에서 선택이 부족한 경우 어떻게해야합니까?
saeedn September

1
SIGRTMIN ... SIGRTMAX 신호에 대한 자세한 정보는 어디서 얻을 수 있습니까? 그들이 사용될 때 그들은 어디에 정의됩니까?
Strubbl

6

신호는 기본 통신 수단 만 제공합니다. 특히 정보를 첨부 할 방법이 없습니다. 수신자는 발신자의 신원이 아닌 신호 번호 만 알고 있습니다. 여러 신호를 하나로 병합 할 수 있습니다. 이러한 모든 제한 사항이 주어지면 신호에 대한 유용한 목적이 많지 않습니다.

보다 복잡한 목적을 위해 파이프 나 소켓과 같은보다 복잡한 상호 작용 수단을 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.