linux中,在定时器信号的处理函数中如何结束整个程序的运行
linux中,在定时器信号的处理函数中怎么结束整个程序的运行?
signal(SIGALRM, handler);
void hander(int sig)
{
...
if(...) exit(0);
...
}
在定时器信号的处理函数中使用exit函数退出程序后,结果导致终端崩溃,有没有其他办法在信号处理函数中终止整个程序的运行?
------解决方案--------------------
你的程序此时在做什么
------解决方案--------------------
信号处理函数里退出程序肯定是有问题的,信号处理函数执行完成后,程序还需要进入内核空间,然后才回到用户空间的
通过信号量等方式通知主线程,在主线程里exit吧
signal(SIGALRM, handler);
void hander(int sig)
{
...
if(...) exit(0);
...
}
在定时器信号的处理函数中使用exit函数退出程序后,结果导致终端崩溃,有没有其他办法在信号处理函数中终止整个程序的运行?
------解决方案--------------------
你的程序此时在做什么
------解决方案--------------------
信号处理函数里退出程序肯定是有问题的,信号处理函数执行完成后,程序还需要进入内核空间,然后才回到用户空间的
通过信号量等方式通知主线程,在主线程里exit吧