主要信号的函数:
sigset_t类型对于每种信号用一个bit表示 “有效"或者"无效” 接下来我们来认识一下信号集操作函数
#Include<signal.h>
int sigemptyset(sigset_t *set);
初始化set所指向的信号集,使其中所有信号的对应的bit清零,表示该信号集不包含任何有效信号.
int sigfillset(sigset_t *set);
初始化set所指向的信号集,使其中所有信号的对应bit置位,表示该信号机的有效信号包括系统支持的所有信号.
int sigaddset(sigset_t *set,int signo);
在该信号集中添加某种有效信号.
int sigdelset(sigset_t *set,int signo);
在该信号集中删除某种有效信号
int sigismemeber(const sigset_t *set,int signo);
是一个布尔函数,用于判断一个信号集的有效信号中是否包含某种信号,若包含贼返回1,不包含则返回0,出错返回-1
int sigprocmask(int how,const sigset_t *set,sigset_t *oset);
读取或更改进程的信号屏蔽字(阻塞信号集)如果成功返回0 失败返回-1
int sigpending(sigset_t *set);
读取当前进程的未决信号集,通过set参数传出,调用成功则返回0,出错则返回-1.
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
void printsigset(sigset_t *set)
{
int i = 0;
for(;i<32;i++){
if(sigismember(set,i))
putchar('1');
else
putchar('0');
}
puts("");
}
int main()
{
sigset_t s,p;
sigemptyset(&s);
sigaddset(&s,SIGINT);
sigprocmask(SIG_BLOCK,&s,NULL);
while(1)
{
sigpending(&p);
printsigset(&p);
sleep(1);
}
return 0;
}