/*-----------------------------------------------------
函数:tst_sig_handlerIn
功能:信号处理函数嵌套测试:在信号处理函数中循环等待信号;
*/
void sig_handlerIn(int sig)
{
int ix;
printf("sig :%d\r\n",sig);
for(ix = 0;ix<2;ix++)
{
printf("sec %d\r\n",ix);
delay_second_byloop();
}
printf("end\r\n");
return ;
}
int tst_sig_handlerIn(void)
{
struct sigaction sig_act;
sigset_t sig_set;
int cnt = 0;
sigemptyset(&sig_set);
sig_act.sa_handler = sig_handlerIn;
sig_act.sa_mask = sig_set;
sig_act.sa_flags = SA_NODEFER;/* 允许嵌套*/
if(sigaction(SIGINT, &sig_act,NULL))
{
printf("sigaction error:%s\n",strerror(errno));
return -1;
}
while(cnt < 2)
{
pause();
printf("Got a single\r\n");
cnt ++;
}
return 0;
}