C で Ctrl-C イベントを適切に処理する方法

Mary-Kate Olsen
リリース: 2024-11-11 01:47:02
オリジナル
168 人が閲覧しました

How to Gracefully Handle Ctrl-C Events in C  ?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート