信号集操作函数
sigprocmask函数
how参数的含义
sigpending函数
示例代码
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
void printsigset(sigset_t* set)
{
int i;
for (i=1;i<64;i++)
{
if (sigismember(set,i))
putchar('1');
else
putchar('0');
}
puts("");
}
void handler(int sig)
{
if (sig==SIGQUIT)
{
sigset_t s;
sigemptyset(&s);
sigaddset(&s,SIGINT);
sigprocmask(SIG_UNBLOCK,&s,NULL);
}
if (sig==SIGINT)
{
printf("recv a signal %d\n",sig);
}
}
int main(void)
{
sigset_t s;
sigset_t p;
signal(SIGINT,handler);
signal(SIGQUIT,handler);
sigemptyset(&s);
sigaddset(&s,SIGINT);
sigprocmask(SIG_BLOCK,&s,NULL);
for (;;)
{
sigpending(&p);
printsigset(&p);
sleep(1);
}
}