Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

Ctrl+Z를 눌러도 일시 중단되지 않는 C 프로그램

<시간/>

프로그래밍에서 프로그램이 오작동하고 터미널 컴파일러에서 비정상적으로 실행될 때 프로그래머는 프로그램 실행을 명시적으로 중지할 수 있는 권한이 있습니다. 프로그램을 명시적으로 중지하려면 사용자가 눌러야 하는 올바른 키보드 단축키를 알아야 합니다.

코드 블록의 실행을 종료하기 위해 두 가지 유형의 키보드 단축키가 사용됩니다.

  • 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