kill -HUP를 수신할 때 프로그램의 동작은 무엇입니까?

kill -HUP를 수신할 때 프로그램의 동작은 무엇입니까?

프로그램이 종료 신호 HUP를 수신하면 무엇을 하는지 알아낼 수 있는 방법이 있습니까?
단순히 ofc 명령을 실행할 필요가 없습니다 :D

예를 들어
killall -HUP pppdpppd를 다시 시작하면
killall -HUP firefoxFirefox가 종료됩니다.

답변1

해당 문서를 읽어보세요. 이것이 유일한 방법입니다. ~처럼키스가 썼다, 원래 의미는한숨을 쉬다프로그램에 접근할 수 없는 사용자이므로 대화형 프로그램은 사라져야 합니다.악마— 사용자와 직접 상호 작용하지 않는 프로그램 — 이 동작이 필요하지 않으며 대신 SIGHUP을 수신할 때 구성 파일을 자주 다시 로드합니다. 그러나 이것은 단지 관례일 뿐입니다.

출처가 있으면 읽어보셔도 됩니다. 또는 바이너리만 있는 경우 이를 분해하고 sigaction신호 처리기를 설정하는 호출을 찾아 SIGHUP해당 신호 처리기가 수행하는 작업을 알아낼 수 있습니다. 처음부터 SIGHUP을 프로그램에 보내지 않도록 준비하는 것이 더 쉬울 것입니다.

어느 시점에서나 특정 프로세스는 특정 신호에 대해 세 가지 상태 중 하나에 있습니다. 즉, 신호를 무시하거나, 기본 작업을 수행하거나, 사용자 정의 핸들러를 실행합니다. ps예를 들어 ps sLinux에서는 많은 unices를 사용하여 프로세스의 신호 마스크를 볼 수 있습니다 . 이를 통해 프로세스가 신호를 무시하는지 아니면 SIGHUP에서 즉시 종료할지 알 수 있지만, 프로세스가 핸들러를 설정하면 핸들러가 무엇을 하는지 알 수 없습니다.

답변2

기본 작업은 SIGHUP에서 프로세스를 종료하는 것입니다. man 7 signal자세한 내용은 참조하십시오 . 하지만 프로그램은 이를 포착하여 원하는 대로 수행할 수 있습니다. 데몬은 절대로 종료되어서는 안 되기 때문에, 자신을 다시 초기화하는 것과 같은 다른 목적으로 SIGHUP을 사용하는 경우가 많습니다(pppd와 마찬가지로). Firefox는 기본 동작을 유지합니다.

관련 정보