> 백엔드 개발 > C++ > C에서 Ctrl-C 이벤트를 적절하게 처리하는 방법은 무엇입니까?

C에서 Ctrl-C 이벤트를 적절하게 처리하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-11 01:47:02
원래의
217명이 탐색했습니다.

How to Gracefully Handle Ctrl-C Events in C  ?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿