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

C에서 Ctrl-C 이벤트를 처리하는 가장 안정적인 방법은 무엇입니까?

원래의
2024-11-15 17:26:03858검색

What's the most reliable way to handle Ctrl-C events in C  ?

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.