C での Ctrl-C イベントのインターセプト
Ctrl-C イベントのインターセプトは、プログラミングにおいて必要なタスクであり、特に、正常に応答したい場合に重要です。予期せぬ中断。
Sigaction を使用する
C では、関数 sigaction を使用してシグナルを処理する方が確実です。構文は次のとおりです:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
ここで:
Thomas が示した例では、sigaction 構造は次のとおりです:
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0;
ここで:
この sigaction 構造体を SIGINT シグナルで使用します。
sigaction(SIGINT, &sigIntHandler, NULL);
ハンドラー関数
最後に、応答するハンドラー関数が必要です。信号まで。この例では、my_handler はメッセージを出力してプログラムを終了します。
void my_handler(int s){ printf("Caught signal %d\n", s); exit(1); }
完全なコード
これは、sigaction を使用して Ctrl-C イベントをキャプチャする完全なコードです。 :
#include#include #include #include 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; }
sigaction を使用すると、Ctrl-C イベントを確実にキャッチし、適切なアクションを実行できます。
以上がSigaction 関数を使用して C で Ctrl-C 割り込みを適切に処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。