23,125
社区成员
发帖
与我相关
我的任务
分享
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
void printsigset(sigset_t *set)
{
int i;
for (i=1; i<NSIG; ++i)
{
if (sigismember(set, i))
putchar('1');
else
putchar('0');
}
printf("\n");
}
void handler(int signo)
{
if (signo == SIGINT)
{
printf("recv a sig=%d\n", signo);
}
else if (signo == SIGQUIT)
{
printf("收到SIGQUIT信号\n");
sigset_t setSig;
sigemptyset(&setSig);
sigprocmask(SIG_SETMASK, &setSig, NULL);
}
}
int main()
{
sigset_t setSig;
sigset_t pSig;
sigemptyset(&setSig);
sigaddset(&setSig, SIGINT);
if (signal(SIGINT, handler) == SIG_ERR)
printf("SIGINT ERR:\n");
if (signal(SIGQUIT, handler) == SIG_ERR)
printf("SIGQUIT ERR:\n");
sigprocmask(SIG_BLOCK, &setSig, NULL);
while (1)
{
sigpending(&pSig);
printsigset(&pSig);
sleep(1);
}
return 0;
}