sigset_t
  号集及信号集操作函数:信号集被定义为一种数据类型:
  typedef struct {
  unsigned long sig[_NSIG_WORDS];
  } sigset_t
  信号集用来描述信号的集合,linux所支持的所有信号可以全部或部分的出现在信号集中,主要与信号阻塞相关函数配合使用。下面是为信号集操作定义的相关函数:
  int sigemptyset(sigset_t *set);
  int sigfillset(sigset_t *set);
  int sigaddset(sigset_t *set, int signum)
  int sigdelset(sigset_t *set, int signum);
  int sigismember(const sigset_t *set, int signum);
  头文件
  #include <signal.h>
  sigemptyset(sigset_t *set)初始化由set指定的信号集,信号集里面的所有信号被清空;
  sigfillset(sigset_t *set)调用该函数后,set指向的信号集中将包含linux支持的64种信号;
  sigaddset(sigset_t *set, int signum)在set指向的信号集中加入signum信号;
  sigdelset(sigset_t *set, int signum)在set指向的信号集中删除signum信号;
  sigismember(const sigset_t *set, int signum)判定信号signum是否在set指向的信号集中。

pthread_sigmask

POSIX 线程 – pthread_sigmask
在多线程的程序里,希望只在主线程中处理信号,可以使用该函数。
 
POSIX线程– pthread_sigmask
在多线程的程序里,希望只在主线程中处理信号,可以使用
函数:
int pthread_sigmask (int how,const sigset_t *set,sigset_t *oset)
  用作在主调线程里控制信号掩码。
How:
SIG_BLOCK:结果集是当前集合参数集的并集;SIG_UNBLOCK:结果集是当前集合参数集的差集;SIG_SETMASK:结果集是由参数集指向的集
头文件:<signal.h>
错误:[EINVAL] how不是已定义值
  提示:除非信号在所有的线程里都阻塞,否则总能将异步信号传输给这个进程。
解释:
每个线程均有自己的信号屏蔽集(信号掩码),可以使用pthread_sigmask函数来屏蔽某个线程对某些信号的
响应处理,仅留下需要处理该信号的线程来处理指定的信号。实现方式是:利用线程信号屏蔽集的继承关系
(在主进程中对sigmask进行设置后,主进程创建出来的线程将继承主进程的掩码)
static const int exceptsigs[] = {
SIGCHLD, SIGIO, SIGURG, SIGWINCH,
SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU, SIGCONT,
-,
};
sigset_t sigset;
sigfillset(&sigset);
for (i = ; exceptsigs[i] != -; i++)
{
sigdelset(&sigset, exceptsigs[i]);
}
pthread_sigmask(SIG_BLOCK, &sigset, NULL);

linux 进程信号集合 sigset_t的更多相关文章

  1. linux 进程信号集合 sigset_t -(转自linengeir的专栏)

    sigset_t 号集及信号集操作函数:信号集被定义为一种数据类型: typedef struct { unsigned long sig[_NSIG_WORDS]: } sigset_t 信号集用来 ...

  2. linux 进程信号

    转载请注明来源:https://www.cnblogs.com/hookjc/ signal 函数的使用方法简单,但并不属于 POSIX 标准,在各类 UNIX 平台上的实现不尽相同,因此其用途受 到 ...

  3. Linux进程信号

    信号 名称 描述 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能终止 17 STOP 无条件停止运行,但不终止 1 ...

  4. Linux 进程通信之 ——信号和信号量总结

    如今最经常使用的进程间通信的方式有:信号,信号量,消息队列,共享内存.       所谓进程通信,就是不同进程之间进行一些"接触",这种接触有简单,也有复杂.机制不同,复杂度也不一 ...

  5. linux进程通信之信号

    本节主要学习信号和与信号相关的处理函数,兴许还会更新. http://blog.csdn.net/xiaoliangsky/article/details/40264151 一 信号 信号是UNIX和 ...

  6. 三十四、Linux 进程与信号——信号特点、信号集和信号屏蔽函数

    34.1 信号特点 信号的发生是随机的,但信号在何种条件下发生是可预测的 进程杠开始启动时,所有信号的处理方式要么默认,要么忽略:忽略是 SIGUSR1 和 SIGUSR2 两个信号,其他都采取默认方 ...

  7. linux 进程通信之 信号

    一,管道PIPE 二,FIFO通信 三,mmap通信 四,信号的概念 信号的特点:简单,但不能携带大量的信息,满足特定条件就会发生 信号的机制:进程B发送信号给进程A.信号是由内核来处理的. 信号的产 ...

  8. Linux 进程与信号的概念和操作

    进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 信号与进程几乎控制了操作系统的每个任务. 在shell中输 ...

  9. 二十七、Linux 进程与信号---进程组和组长进程

    27.1 进程组 27.1.1 进程组介绍 进程组为一个或多个进程的集合 进程组可以接受同一终端的各种信号,同一个信号发送进程组等于发送给组中的所有进程 每个进程组有唯一的进程组 ID 进程组的消亡要 ...

随机推荐

  1. Java EE JavaBean组件

    一.简介 JavaBean组件是一些可移植.可重用并可组装到应用程序中的Java类,类必须是具体的和公共的. 符合下列设计规则的任何Java类均是以JavaBean: 1.对数据类型“protype” ...

  2. 三、Django之请求与响应-Part 1

    一.新建项目 进入你指定的项目保存目录,然后运行下面的命令: $ django-admin startproject mysite 这将在目录下生成一个mysite目录,也就是你的这个Django项目 ...

  3. datax 执行流程分析

    https://www.jianshu.com/nb/29319571 https://www.jianshu.com/p/b10fbdee7e56

  4. 【BUG】12小时制和24小时制获取当天零点问题

    [BUG]12小时制和24小时制获取当天零点问题 最近在写定时服务的时候,要获取当天的零点这个时间,但是是这样获取的 DateTime dt = DateTime.Parse(DateTime.Now ...

  5. Segments CodeForces 909B (找规律)

    Description You are given an integer N. Consider all possible segments (线段,划分)on the coordinate axis ...

  6. Full Binary Tree(二叉树找规律)

    Description In computer science, a binary tree is a tree data structure in which each node has at mo ...

  7. 浅谈Java变量的初始化顺序详解

    规则1(无继承情况下):对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器证明代码: 复制代码 代码如下: p ...

  8. vs调试iisExpress经常卡死

    最近调试一个项目时,电脑经常卡死,不得不强制重启,一直不知道iisExpress为何卡死的. 想了很多办法,强制删除bin里面的文件,结果不行: 企图删除iisExpress虚拟目录中的文件也不行: ...

  9. Rsyslog初步学习

    一.Rsyslog整体架构 Rsyslog消息流:输入模块——>预处理模块——>主队列——>过滤模块——>执行队列——>输出模块 1. 输入模块 输入模块是消息来源 2. ...

  10. lintcode-391-数飞机

    391-数飞机 给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机? 注意事项 如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权. 样例 对于每架 ...