0

こんにちは、私は次のコードを持っています:

server s;
namespace signals_handler
{
    //sig_atomic_t is_stop=0;
    void signal_handler(int sig)
    {
        if(sig==SIGHUP)
        {
            printf("recived :SIGHUP\n");
            s.restart();
        }
        else if(sig==SIGINT)
        {
            printf("recived :SIGINT\n");
            //is_stop = 1;
            s.interupt();
        }
    }
}
int main(int argc, char* argv[])
{
    signal(SIGHUP, signals_handler::signal_handler);
    signal(SIGINT, signals_handler::signal_handler);
    s.start();
    s.listen();
    return 0;
}

このコードの実行を開始すると、SIGHUP をキャッチできます。SIGINT はアプリケーションに配信されませんが、デバッガーは「リッスン」関数で停止しましたが、シグナルハンドラー関数に移動しません。なぜこれが起こり、何が間違っているのでしょうか?

4

1 に答える 1