프로그램이 종료 신호 HUP를 수신하면 무엇을 하는지 알아낼 수 있는 방법이 있습니까?
단순히 ofc 명령을 실행할 필요가 없습니다 :D
예를 들어
killall -HUP pppd
pppd를 다시 시작하면
killall -HUP firefox
Firefox가 종료됩니다.
답변1
해당 문서를 읽어보세요. 이것이 유일한 방법입니다. ~처럼키스가 썼다, 원래 의미는한숨을 쉬다프로그램에 접근할 수 없는 사용자이므로 대화형 프로그램은 사라져야 합니다.악마— 사용자와 직접 상호 작용하지 않는 프로그램 — 이 동작이 필요하지 않으며 대신 SIGHUP을 수신할 때 구성 파일을 자주 다시 로드합니다. 그러나 이것은 단지 관례일 뿐입니다.
출처가 있으면 읽어보셔도 됩니다. 또는 바이너리만 있는 경우 이를 분해하고 sigaction
신호 처리기를 설정하는 호출을 찾아 SIGHUP
해당 신호 처리기가 수행하는 작업을 알아낼 수 있습니다. 처음부터 SIGHUP을 프로그램에 보내지 않도록 준비하는 것이 더 쉬울 것입니다.
어느 시점에서나 특정 프로세스는 특정 신호에 대해 세 가지 상태 중 하나에 있습니다. 즉, 신호를 무시하거나, 기본 작업을 수행하거나, 사용자 정의 핸들러를 실행합니다. ps
예를 들어 ps s
Linux에서는 많은 unices를 사용하여 프로세스의 신호 마스크를 볼 수 있습니다 . 이를 통해 프로세스가 신호를 무시하는지 아니면 SIGHUP에서 즉시 종료할지 알 수 있지만, 프로세스가 핸들러를 설정하면 핸들러가 무엇을 하는지 알 수 없습니다.
답변2
기본 작업은 SIGHUP에서 프로세스를 종료하는 것입니다. man 7 signal
자세한 내용은 참조하십시오 . 하지만 프로그램은 이를 포착하여 원하는 대로 수행할 수 있습니다. 데몬은 절대로 종료되어서는 안 되기 때문에, 자신을 다시 초기화하는 것과 같은 다른 목적으로 SIGHUP을 사용하는 경우가 많습니다(pppd와 마찬가지로). Firefox는 기본 동작을 유지합니다.