主要信号的函数:
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; }