C에서 Ctrl-C 이벤트 포착
C에서 Ctrl-C(SIGINT) 이벤트를 포착하는 것은 정상적인 프로그램 종료를 처리하는 데 중요합니다. 신호 라이브러리는 이에 대한 간단한 메커니즘을 제공하지만 그 신뢰성은 구현에 따라 다릅니다.
일관적인 동작을 보장하려면 대신 sigaction 함수를 사용하는 것이 좋습니다. 다음은 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; }
이 코드는 SIGINT 신호(Ctrl-C)가 수신되면 메시지를 인쇄하고 프로그램을 종료하는 신호 처리기 my_handler를 정의합니다. sigaction 함수는 SIGINT 신호에 대한 핸들러를 등록하고 올바른 동작을 위해 필요한 플래그를 설정합니다.
이제 프로그램이 실행 중이고 Ctrl-C를 누르면 신호를 포착하고 핸들러를 호출합니다. 그러면 적절한 메시지가 인쇄되고 프로그램이 정상적으로 종료됩니다.
위 내용은 C에서 Ctrl-C 이벤트를 적절하게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!