系统相关
首页 > 系统相关> > Linux信号(三)(信号集合)

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