C에서 안정적인 Ctrl-C 처리
질문:
어떻게 우아하게 캡처할 수 있습니까? C의 Ctrl-C 이벤트 ?
응답:
신호를 사용하는 것이 일반적인 접근 방식이지만 다양한 구현에서 항상 신뢰할 수 있는 것은 아닙니다. 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); // or perform other necessary actions } int main() { struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); pause(); // block the main thread until a Ctrl-C signal is received return 0; }
이 수정된 코드에서는 sigaction을 사용하여 신호 처리기 함수인 my_handler를 등록합니다. 이 함수는 Ctrl-C(SIGINT) 신호가 수신될 때 실행됩니다. sigaction을 사용하면 신호 처리 메커니즘을 더 효과적으로 제어할 수 있어 이벤트 캡처의 신뢰성이 더욱 높아집니다.
위 내용은 C에서 Ctrl-C 이벤트를 처리하는 가장 안정적인 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!