信号集处理函数一
- 清空信号集
- int sigemptyset(sigset_t *set);
- 填充信号集
- int sigfillset(sigset_t *set);
- 添加某个信号到信号集
- int sigaddset(sigset_t *set, int signum);
- 从集合中删除某个信号
- int sigdelset(sigset_t *set, int signum);
- 是否为集合里的成员
- int sigismember(const sigset_t *set, int signum);
- 返回1代表signum在集合中
信号集处理函数二
- 设置阻塞信号集,或者解除阻塞
- how[SIG_BLOCK 设置阻塞,SIG_UNBLOCK 解除阻塞,SIG_SETMASK 设置set为新的阻塞信号集]
- set 传入的信号集
- oldset 旧的信号集,传出
- int sigprocmask(int how,const sigset_t *set,sigset_t *oldset);
- 获取未决信号集
- set 传出参数,当前的未决信号集
- int sigpending(sigset_t *set);
int main()
{
sigset_t pend,sigproc;
//设置阻塞信号,等待按键产生信号
sigemptyset(&sigproc); //先清空
sigaddset(&sigproc,SIGINT);
sigaddset(&sigproc,SIGQUIT);
sigaddset(&sigproc,SIGKILL);
//设置阻塞信号集
sigprocmask(SIG_BLOCK,&sigproc,NULL);
//循环取未决信号集,打印
while(1)
{
sigpending(&pend);
int i= 1;
for (i = 0; i < 32; ++i) {
if (sigismember(&pend,i) == 1) {
printf("1");
}else{
printf("0");
}
}
printf("\n");
sleep(1);
}
return 0;
}