Linux에서 사용자 정의 신호를 만들 수있는 방법이 있습니까? 내 신호 (신호 번호)는 기존 신호 번호와 일치하지 않아야합니다.Linux에서 사용자 정의 신호를 만들 수있는 방법이 있습니까?
즉, 내 고유 한 신호를 만들고 싶습니다.이 신호는 내 처리기에서 등록되고 발견됩니다.
가능합니까? 그렇다면 어떻게?
미리 감사드립니다.
Linux에서 사용자 정의 신호를 만들 수있는 방법이 있습니까? 내 신호 (신호 번호)는 기존 신호 번호와 일치하지 않아야합니다.Linux에서 사용자 정의 신호를 만들 수있는 방법이 있습니까?
즉, 내 고유 한 신호를 만들고 싶습니다.이 신호는 내 처리기에서 등록되고 발견됩니다.
가능합니까? 그렇다면 어떻게?
미리 감사드립니다.
자신 만의 SIGWHATEVER를 추가하거나 등록 할 수 없습니다.
sigset_t
을 참조하십시오. 고정 크기입니다. valid_signal()
beartraps를 참조하십시오.
사용자가 정의한 목적으로 설계된 USR1
및 USR2
신호가 있습니다.
하지만 미리 정의되어 있습니다. 신호 번호는 고유하지 않을 겁니다, 그렇죠? – kingsmasher1
USR1과 USR2를 사용할 수 있습니다.
충분하지 않다면, 외부 응용 프로그램이 메시지를 보낼 수있는 소켓에서 응용 프로그램을 수신하도록하여 동작과 유사한 신호를 에뮬레이트 할 수 있습니다.
하지만이 경우 신호 처리기로 등록 할 수 없습니다. 우리가 할 수 있을까요? 왜냐하면이 신호가 타이머에 의해 사용될 때이 신호는 고유해야하며 기존 신호와 충돌하지 않아야합니다. 그래서 소켓 메소드는 실행 가능하지 않습니다. – kingsmasher1
프로그램 안에 완전히 들어 있으면 신호를 사용할 필요가 없습니다. 간단한 메시징 시스템을 구현하고이를 사용할 수 있습니다. 신호는 프로세스 간의 비동기 통신에 사용하는 것이 가장 좋습니다. –
Noufal은 POSIX 타이머 timer_create에서 사용할 수 없습니다. – kingsmasher1
당신은, 당신이 원하는대로 사용할 수 있습니다 (이 일반적으로 상수하지만 런타임에 평가 기능을 확장 매크로 없습니다) 특별한 신호 :
SIGRTMIN
SIGRTMAX
을 통해 함께 자신의 커널을 컴파일 할 수 SIGUSR1
및 SIGUSR2
. 전자는 추가 실시간 대기열 지원을 제공합니다. 후자는 그렇지 않습니다. 사용하기 만하면됩니다.
이 대답은 받아 들여지지 않았습니다. – Mawg
어디서'valid_signal()'을 얻을 수 있습니까? 나는 어떤 man 페이지도 찾을 수 없었다. – kingsmasher1
@ kingsmasher1 :'valid_signal()'은 신호가 <신호의 개수 인 경우 true를 반환하는 리눅스 커널의 함수입니다. 그것은 자신의 신호를 정의하는 것과 같은 일을하지 못하도록'kill()'시스템 콜과 같은 것들에 의해 사용됩니다. – JeremyP
http://lxr.free-electrons.com/ident?v=2.6.28;i=valid_signal – JeremyP