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