이 섹션에서는 Ctrl + C 키로 종료할 수 없는 프로그램을 C로 작성하는 방법을 살펴보겠습니다.
Ctrl + C는 키보드 인터럽트를 생성하고 현재 프로세스의 실행을 중지합니다. 여기서 Ctrl + C 키를 누르면 메시지가 인쇄되고 실행이 계속됩니다. 이 기능을 사용하기 위해 C에서 신호 처리 기술을 사용할 것입니다. Ctrl + C를 누르면 SIGINT 신호가 생성됩니다. 다음 목록에는 다른 신호와 기능이 있습니다.
신호 | 설명 |
---|---|
SIGABRT | 비정상 종료를 나타냅니다. |
SIGFPE | 부동 소수점 예외를 나타냅니다. |
시질 | 잘못된 명령을 나타냅니다. |
SIGINT | 프로그램에 전송된 대화형 주의 요청을 나타냅니다. |
SIGSEGV | 잘못된 메모리 액세스를 나타냅니다. |
시그텀 | 프로그램에 전송된 종료 요청을 나타냅니다. |
여기서는 표준 C 라이브러리 함수인 signal()을 사용하여 이러한 신호를 처리합니다.
예시 코드
#include <stdio.h> #include <signal.h> void sigint_handler(int signum) { //Handler for SIGINT //Reset handler to catch SIGINT next time. signal(SIGINT, sigint_handler); printf("Cannot be stopped using Ctrl+C \n"); fflush(stdout); } main () { signal(SIGINT, sigint_handler); while(1) { //create infinite loop } }
출력
Cannot be stopped using Ctrl+C Cannot be stopped using Ctrl+C