Linux 프로그램이 SIGXXX 명령을 수신하고 UI에서 응답할 수 있습니까?

Linux 프로그램이 SIGXXX 명령을 수신하고 UI에서 응답할 수 있습니까?

나는 노력하고있다정지시키다종료 신호가 있는지 궁금해하는 명령, 그래픽 데스크탑이든 터미널 프로그램이든 GUI 프로그램은 명령 File| Exit이나 X창의 버튼을 클릭하는 것처럼 사용자가 UI에서 프로그램을 종료한 것처럼 처리합니다. , 따라서 열려 있는 파일을 저장하라는 메시지가 표시됩니다.

kill -l64개 이상의 옵션을 표시합니다. 종료된 GUI 옵션과 개별적으로 결합된 것이 있습니까?

나는 이것을 nano예로 시도했지만 지금까지 시도한 옵션 중 SIGTERM을 제외하고는 작동하지 않습니다.

답변1

습관. 사용자가 프로세스를 종료하기 위해 일반적으로 사용하는 주요 신호는 다음과 같습니다.

  • SIGINT ( + 에서 터미널로 전송 Ctrl) — 현재 작업을 중단하고 최상위 대화형 루프로 이동합니다. C프로그램에 최상위 대화형 루프가 없으면 프로그램을 종료하십시오.
  • SIGTERM — 프로그램을 완전히 중지합니다. 이로 인해 긴급 저장이 발생할 수 있습니다.
  • SIGHUP — 터미널이 사라질 때 시스템이 터미널에서 실행 중인 프로그램으로 보냅니다. 일반적으로 SIGTERM처럼 처리됩니다.
  • SIGQUIT (터미널에서 +로 전송 Ctrl) - 정리 및 코어 덤프 없이 다이됩니다(디버깅에 사용됨).\
  • SIGKILL — 프로그램이 정리 작업을 수행할 기회 없이 종료됩니다.

이 중 어느 것도 일반적인 의미가 없습니다. 즉, 프로그램이 사용자에게 무엇이든 묻는 메시지를 표시합니다. 프로그램이 SIGTERM에 대해 프롬프트를 표시하는 것이 합리적일 수 있지만 그렇게 하는 프로그램은 생각할 수 없습니다. 일부 프로그램은 SIGINT에 프롬프트를 표시하여 최상위 수준으로 돌아가거나 프로그램을 종료하거나 디버그 모드로 들어가는 옵션을 제공합니다. 일반적으로 프로그램이 SIGTERM을 수신할 때 사용자가 프로그램과 상호 작용하는 콘솔 앞에 있지 않거나 프로그램이 응답하지 않는다고 가정합니다. 그렇지 않으면 사용자는 신호를 보내는 대신 대화식 컨트롤을 사용하게 됩니다.

GUI 이벤트(예: x창 제목 표시줄의 버튼 클릭)는 신호를 보내지 않고 대신 일반 X11 통신 채널을 통해 전송됩니다.

관련 정보