シグナルトラップとは何ですか?

シグナルトラップとは何ですか?

信号はプロセス間の通信方法ですが、信号トラップが何であるかについていくつかの質問があります。トラップはオペレーティングシステムのシグナルとどのような関係がありますか?

ベストアンサー1

時には千の言葉の価値がある例があります。このC ++コードは非常に単純な信号ハンドラを公開します。

void gracefullShutdown(int sigNum) { 

    // cleanup or do wathever you need to do in case of received signal(s)

    // Terminate this executable
    exit(sigNum);
}

int main(int argc, char* argv[]) {

    signal(SIGINT , gracefullShutdown); 
    signal(SIGTERM , gracefullShutdown);

    std::cout << "starting..." << std::endl;

    while(1);

    exit(EXIT_SUCCESS);
}

プログラムの実行中にCtrl + Cを押すと、LinuxカーネルはプログラムにSIGINTシグナルを送信し、通常終了しますが、この場合は終了する前に特定のタスクを実行できます。

おすすめ記事