Linux_进程信号

主要信号的函数:

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值