Programing

ctrl-c 이벤트를 어떻게 잡을 수 있습니까?

crosscheck 2020. 7. 10. 08:00
반응형

ctrl-c 이벤트를 어떻게 잡을 수 있습니까?


C ++에서 Ctrl+ C이벤트를 어떻게 잡을 수 있습니까?


signal구현이 다르기 때문에 가장 신뢰할 수있는 방법은 아닙니다. 을 사용하는 것이 좋습니다 sigaction. Tom의 코드는 이제 다음과 같습니다.

#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void my_handler(int s){
           printf("Caught signal %d\n",s);
           exit(1); 

}

int main(int argc,char** argv)
{

   struct sigaction sigIntHandler;

   sigIntHandler.sa_handler = my_handler;
   sigemptyset(&sigIntHandler.sa_mask);
   sigIntHandler.sa_flags = 0;

   sigaction(SIGINT, &sigIntHandler, NULL);

   pause();

   return 0;    
}

Windows 콘솔 앱의 경우 SetConsoleCtrlHandler사용 하여CTRL + CCTRL+ 를 처리 하려고합니다 BREAK.

예를 보려면 여기참조 하십시오 .


SIGINT 신호 를 잡아야합니다 (POSIX와 올바르게 대화하고 있습니까?)

sigaction에 대해서는 @Gab Royer의 답변을 참조하십시오.

예:

#include <signal.h>
#include <stdlib.h>
#include <stdio.h>

void my_handler(sig_t s){
           printf("Caught signal %d\n",s);
           exit(1); 

}

int main(int argc,char** argv)
{
   signal (SIGINT,my_handler);

   while(1);
   return 0;

}

예, 이것은 플랫폼에 따른 질문입니다.

POSIX에서 콘솔 프로그램을 작성하는 경우 신호 API (#include <signal.h>)를 사용하십시오.

WIN32 GUI 응용 프로그램에서는 WM_KEYDOWN 메시지를 처리해야합니다.

참고URL : https://stackoverflow.com/questions/1641182/how-can-i-catch-a-ctrl-c-event

반응형