Ctrl+c를 두 번 입력하면 Linux에서 실행 중인 프로세스가 중지되는 이유는 무엇입니까?

Ctrl+c를 두 번 입력하면 Linux에서 실행 중인 프로세스가 중지되는 이유는 무엇입니까?

일부 Linux 프로그램(예: vlc)은 터미널에 ctrl+를 두 번 입력하여 c실행을 종료할 것을 권장합니다(프로그램이 첫 번째 실행 후 중지되지 않는 경우).

ctrl+ 입력이 c두 번 작동하지만 처음에는 작동하지 않는 이유는 무엇입니까 ?

답변1

그 효과는 전적으로 응용 프로그램에 따라 다릅니다. ctrl+를 누르면 c터미널 에뮬레이터가 다음을 보냅니다.지능을 신호하다적절한 "신호 처리기"를 트리거하는 신호를 포그라운드 애플리케이션에 보냅니다. SIGINT의 기본 신호 처리기는 애플리케이션을 종료합니다. 그러나 모든 프로그램은 SIGINT에 대한 자체 신호 처리기를 설치할 수 있습니다(실행을 전혀 중지하지 않는 신호 처리기 포함).

확실히,가상 LC첫 번째 호출에서 정리/정상적인 종료를 수행하고 두 번째 호출에서 실행을 즉시 종료하는 기본 동작으로 되돌리는 신호 처리기를 설치합니다.

답변2

지능을 신호하다Ctrl, + 에 의해 전송된 신호는 C일반적으로 프로그램에 주 명령 처리 루프에서 벗어나거나 말이 되지 않는 경우 완전히 종료하도록 지시합니다. 일부 프로그램은 SIGINT를 수신할 때 정리 프로세스를 실행합니다. 프로그램이 너무 복잡해서 정리 프로세스가 실패하는 경우 일부 프로그램에서는 두 번째 Ctrl+ C로 인해 프로그램이 즉시 종료됩니다. 그렇게 하는 것은 각 프로그램 작성자에게 달려 있습니다.

두 번째 Ctrl+가 C프로그램을 종료하지 않으면 Ctrl+를 시도하면 \프로그램이 전송됩니다.신호 출구, 더 폭력적인 신호(그러나 여전히 포착 가능한 신호) 또는 Ctrl+Z정지시키다프로그램 뒤에 kill명령이 옵니다(예: kill %1send신호 용어, 전통적으로 작업 번호 1의 경우 SIGQUIT보다 덜 강렬한 신호입니다. 다른 모든 방법이 실패하면 를 사용하여 프로그램 kill -KILL(이라고도 함) 을 종료하고 kill -9잡을 수 없는 신호를 보냅니다.신호 살해.

관련 정보