C에서 Ctrl-C 이벤트 가로채기
Ctrl-C 이벤트 가로채기는 프로그래밍에서 필요한 작업입니다. 특히 우아하게 응답하려는 경우에는 더욱 그렇습니다. 예상치 못한 중단.
Sigaction 사용
C에서는 sigaction 함수를 사용하여 신호를 처리하는 것이 더 안정적입니다. 구문은 다음과 같습니다:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
여기서:
Thomas가 제시한 예에서 sigaction 구조는 다음과 같습니다.
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0;
여기서:
SIGINT 신호와 함께 이 sigaction 구조를 사용합니다:
sigaction(SIGINT, &sigIntHandler, NULL);
핸들러 함수
마지막으로 신호에 응답하기 위한 핸들러 함수가 필요합니다. 예제에서 my_handler는 메시지를 인쇄하고 프로그램을 종료합니다.
void my_handler(int s){ printf("Caught signal %d\n", s); exit(1); }
전체 코드
다음은 sigaction을 사용하여 Ctrl-C 이벤트를 캡처하는 전체 코드입니다.
#include#include #include #include 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; }
sigaction을 사용하면 Ctrl-C 이벤트를 안정적으로 포착하고 적절한 조치를 취할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3