我试图同时处理两个信号,为什么这不可能?
在这段代码中只有一个信号在触发,代码有什么问题?
//signal handler
void fun(int sig, siginfo_t *siginfo,void *ptr)
{
printf("si_code=%d\n",siginfo->si_code);
printf("siGNO1=%d\n",siginfo->si_signo);
printf("incoming\n");
}
void fun2(int sig,siginfo_t *siginfo,void *ptr)
{
printf("si_fd=%d\n",siginfo->si_fd);
printf("signal2\n");
}
int main()
{
struct sigaction sig; //sigaction
sig.sa_sigaction=fun;
sig.sa_flags=SA_SIGINFO;
alarm(1);
sigaction(SIGALRM,&sig,NULL);
struct itimerval tim;
struct sigaction sig2;
memset(&sig2,0,sizeof(sig2));
sig2.sa_sigaction=fun2;
sig2.sa_flags=SA_SIGINFO;
tim.it_value.tv_sec=1;
tim.it_interval.tv_sec=1;
tim.it_value.tv_usec=1;
tim.it_interval.tv_usec=2;
sigaction(SIGALRM,&sig2,NULL);
setitimer(ITIMER_REAL,&tim,NULL);
while(1)
{
sleep(1);
}
}
我是一名优秀的程序员,十分优秀!