【发布时间】:2024-01-08 17:09:01
【问题描述】:
美好的一天,我有下一个代码:
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 不为我的应用程序传递,但调试器在“侦听”函数中停止但没有移动到信号处理函数,为什么会发生这种情况以及我做错了什么?
【问题讨论】: