信号集
能表示多个信号——信号集(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");
}