Linux信号(三)(信号集合)
作者:互联网
信号集合结构体
//创建集合
sigset_t set
- 集合操作函数
int sigemptyset(sigset_t *set);//清空集合
int sigfillset(sigset_t *set);//将所有信号加入集合
int sigmemberset(sigset_t *set, int signum);//判断是否存在信号signum
int sigdelset(sigset *set,int signum);//删除信号 signum
int sigaddset(sigset_t *set,int signum);//加入信号
int sigprocmask(int how,const sigset_t *set,sigset_t*set);//设置屏蔽信号集
how:用于指定修改方式
SIG_BLOCK 阻塞 使得信号不能递送到进程当中
SIG_NOBLOC 非阻塞
SIG_SETMASK
未决信号
int sigpending( sigset_t *set);//set用来接受没有递送到达进程的信号集
demo
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
void out_put(sigset_t set)
{
for(int i=1;i<32;i++)
{
if(sigismember(&set,i)) //判断集合是否有该信号
{
printf("1");
}
else
{
printf("0");
}
}
printf("\n");
}
int main()
{
sigset_t set;
sigemptyset(&set);//清空集合
out_put(set);
sigaddset(&set,9);//向集合加入某个信号
out_put(set);
sigdelset(&set,9);//删除集合中某个信号
out_put(set);
sigfillset(&set);
out_put(set); //把所有信号加入到集合当中
sigprocmask(SIG_BLOCK,&set,NULL); //设置信号屏蔽集
while(1)
{
sleep(1);
out_put(set);
}
return 0;
}
标签:set,sigset,int,put,信号,Linux,集合,out 来源: https://blog.csdn.net/qq_45833409/article/details/112850089