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