#include<stdio.h>
#include<signal.h>
void handler(int signo)
{
printf("Into handler\n");
while(1);
}
int main()
{
struct sigaction act;
act.sa_handler = handler;
act.sa_flags = 0;
sigemptyset(& act.sa_mask);
sigaction(SIGINT, &act, NULL);
while(1);
return 0;
}
抓住之后键盘中断有一次,当我再次按“Ctrl+C”时,SIGINT 未被处理......
我打算那样“进入处理程序”每次我都应该打印按“Ctrl+C”.
我想在“SIGINT handler()”本身内部捕获SIGINT。
您需要在 sa_mask 上设置 SA_NODEFER 以捕获与当前正在处理的信号相同的信号:
SA_NODEFER:不阻止从其自己的信号处理程序中接收信号。 SA_NOMASK 是该标志的过时的非标准同义词。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)