ホームページ >バックエンド開発 >C++ >C で Ctrl-C イベントを処理する最も信頼できる方法は何ですか?

C で Ctrl-C イベントを処理する最も信頼できる方法は何ですか?

オリジナル
2024-11-15 17:26:03860ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。