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;
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值