こんにちは、私は次のコードを持っています:
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 はアプリケーションに配信されませんが、デバッガーは「リッスン」関数で停止しましたが、シグナルハンドラー関数に移動しません。なぜこれが起こり、何が間違っているのでしょうか?