> 백엔드 개발 > C++ > C에서 Ctrl-C 이벤트를 처리하기 위해 `sigaction`을 어떻게 사용할 수 있습니까?

C에서 Ctrl-C 이벤트를 처리하기 위해 `sigaction`을 어떻게 사용할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-11-15 03:41:02
원래의
345명이 탐색했습니다.

How Can `sigaction` Be Used to Handle Ctrl-C Events in C  ?

sigaction을 사용하여 C에서 Ctrl-C 이벤트 처리

C에서 Ctrl-C 이벤트를 효율적으로 포착하려면 가장 신뢰할 수 있는 접근 방식은 'sigaction'을 활용하는 것입니다. 기능. 단순한 '신호' 기능보다 더 뛰어난 제어 및 호환성을 제공합니다.

sigaction을 구현하려면 구조화된 접근 방식이 필요합니다.

  1. sigaction 구조 선언:
    'sigaction' 구조를 정의합니다. 'sigIntHandler'.
  2. 신호 처리기 설정:
    처리기 함수('my_handler')의 주소를 'sigIntHandler.sa_handler'에 할당합니다. 핸들러 함수에서 신호 수신 시 원하는 작업을 수행합니다.
  3. 신호 마스크 초기화:
    'sigemptyset'를 사용하여 'sigIntHandler.sa_mask'를 빈 신호 세트로 초기화합니다. 이를 통해 핸들러는 다른 신호를 차단하지 않고 지정된 신호에 응답할 수 있습니다.
  4. 신호 동작 플래그 설정:
    기본 옵션을 사용하려면 'sigIntHandler.sa_flags'를 '0'으로 설정하세요.
  5. 신호 동작 등록:
    'sigaction'을 사용하여 신호 작업을 등록하기 위한 'SIGINT' 신호 및 정의된 핸들러 구조('sigIntHandler').
  6. 실행 일시 중지:
    다음 때까지 프로그램 실행을 중지하려면 'pause()'를 호출하세요. 신호가 수신되었습니다.
  7. 예제 코드:
    다음 질문의 수정된 코드는 'sigaction'의 사용을 보여줍니다.
#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;    
}
로그인 후 복사

이 접근 방식은 C에서 Ctrl-C 이벤트를 처리하기 위한 강력한 메커니즘을 제공하여 다양한 구현에서 안정성과 효율성을 보장합니다.

위 내용은 C에서 Ctrl-C 이벤트를 처리하기 위해 `sigaction`을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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