系统编程------信号集

信号集

能表示多个信号——信号集(signal set)的数据类型

信号集操作相关函数:

int sigemptyset(sigset_t *set); //清空信号集
int sigfillset(sigset_t *set); //填充信号集
int sigaddset(sigset_t *set, int signum); //添加指定信号到信号集
int sigdelset(sigset_t *set, int signum); //从信号集删除指定信号
返回成功 失败: < 0
int sigismember(const sigset_t *set, int signum); //查询信号集中是否有指定信号
如果有返回1,如果没有返回0

struct sigset_t;

#define _NSIG 64
#define _NSIG_BPW __BITS_PER_LONG //32
#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
1.typedef struct {
unsigned long sig[_NSIG_WORDS]; //2个long: 1个64位,128位
} sigset_t;

#include <signal.h>
#include <stdio.h>

int main()
{
    sigset_t set = {0};
    if(sigemptyset(&set) < 0)
    {
        perror("sigemptyset error\n");
        return -1;
    }

//添加指定信号集
#if 1
    sigaddset(&set,SIGINT);
    sigaddset(&set,SIGINT);
#endif

//查询信号集中是否有指定信号
    if(sigismember(&set,SIGINT))
    printf("set have SIGINT\n");
    else 
    printf("set not have SIGINT\n");

//从信号集删除指定信号
    sigdelset(&set,SIGINT);
    sigdelset(&set,SIGQUIT);

//查询信号集中是否有指定信号
    if(sigismember(&set,SIGINT))
    printf("set have SIGINT\n");
    else 
    printf("set not have SIGINT\n");

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值