프로그래밍에서 프로그램이 오작동하고 터미널 컴파일러에서 비정상적으로 실행될 때 프로그래머는 프로그램 실행을 명시적으로 중지할 수 있는 권한이 있습니다. 프로그램을 명시적으로 중지하려면 사용자가 눌러야 하는 올바른 키보드 단축키를 알아야 합니다.
코드 블록의 실행을 종료하기 위해 두 가지 유형의 키보드 단축키가 사용됩니다.
-
Ctrl+c − 프로그램의 실행을 정지시킬 때 사용하며, I/O 연산을 완료하는 데 약간의 시간이 소요되고 실행을 일시 중단합니다. SIGINT 종료되는 프로세스에 신호를 보냅니다. 일부 언어에서는 이 SIGINT를 처리하는 방법이 있습니다. C의 신호 함수처럼.
-
Ctrl+z - 프로그램 실행을 중지하는 데 사용되며 프로세스와 관련된 모든 작업이 종료되고 실행이 일시 중지됩니다. SINTSTP 구현은 동일하지만 이 신호는 다른 것에 비해 더 강력하지만 프로그램을 종료하는 프로세스에 신호를 보냅니다. 이 또한 처리할 수 있습니다.
여기에서 ctrl+z 호출을 능가할 수 있는 코드를 작성합니다. 프로그램은 일시 중단되는 대신 "ctrl+z는 이 코드를 일시 중단할 수 없습니다. ".
위에서 논의한 바와 같이 ctrl+z 호출은 C 프로그래밍 언어로 처리할 수 있습니다. SINTSTP 신호는 프로그램 프로세스를 종료하기 위해 호출됩니다. 이 신호가 하는 일을 재정의하여 사용할 때 코드를 종료하고 한 줄을 인쇄하지 않도록 하겠습니다.
signal() 메서드는 이러한 유형의 작업을 처리하는 데 사용됩니다.
예시
#include <stdio.h> #include <signal.h> void signalhandler(int sig_num){ signal(SIGTSTP, signalhandler); printf("Cannot execute Ctrl+Z\n"); } int main(){ int a = 1; signal(SIGTSTP, signalhandler); while(a){ } return 0; }
출력
// an infinite loop