POSIX标准定义了数据类型sigset_t来表示信号集。

  1.  sigprocmask函数

    每一个进程都有一个信号屏蔽码,它规定了当前阻塞而不能递送给该进程的信号集。函数sigprocmask可以检测或者更改进程的信号屏蔽码。

int sigprocmask(int how, const sigset_t * set, sigset_t * oldset);

如果oldset为非空指针,则该进程之前的信号屏蔽码通过oldset返回。

如果set为非空指针,则该函数将根据how来修改信号当前的屏蔽码,how的取值如下:

(1)SIG_BLOCK:将进程新的信号屏蔽码设置成为当前信号屏蔽码和set指向信号集的并集。

(2)SIG_UNBLOC:将进程新的信号屏蔽码设置成为当前信号屏蔽码中,删除set所指向的信号集,即set指针包含着我们希望解除阻塞的信号。即使对当前信号屏蔽码中不存在的信号使用SIG_UNBLOCK也是合法的。

(3)SIG_SETMASK:将进程新的信号屏蔽码设置成为set所指向的。

  2.   sigpending函数

int sigpengding(sigset_t *set);用来获取当前未决的信号集。

3.  sigsuspend函数

int sigsuspend(const sigset_t * mask);将进程屏蔽码设置成为mask,然后与pause函数一样,等待信号的发生并执行完信号处理函数。信号处理函数执行完后再把进程的信号屏蔽码设置为原来的屏蔽字,然后sigsuspend函数才返回。sigsuspeng保证改变进程的屏蔽码和将进程挂起等待信号的操作是原子操作。

转载于:https://www.cnblogs.com/nathan-1988/archive/2012/06/25/2560872.html

Linux 信号随笔相关推荐

  1. Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析

    本文是作者对tslib库的ts_test.c文件进行分析的随笔,其实tslib的几个测试程序结构差不多,譬如ts_print.c和ts_print_raw.c等. 本文并没有涉及太多概念,也没有详细介 ...

  2. Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务

    1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...

  3. linux信号(signal) 机制分析

    1       信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的. ...

  4. linux 信号 core,Shell 信号发送与捕捉

    原标题:Shell 信号发送与捕捉 作者:李振良OK 1.Linux信号类型 信号(Signal):信号是在软件层次上对中断机制的一种模拟,通过给一个进程发送信号,执行相应的处理函数. 进程可以通过三 ...

  5. Linux信号 一 信号可靠性与分类

    开发SNMP的时候用到了Linux信号机制,总结了一下关于信号的知识. 信号是一种进程间通信手段,本质是一种软件中断,用来处理异步事件.信号机制是Unix家族里一个古老的通信机制.传统的信号机制有一些 ...

  6. linux信号使用,linux信号使用注意事项

    1.不要在信号处理函数中处理复杂的事情 2.信号处理函数中不能有互斥锁会造成死锁,可以用信号量替代 3.信号是置位方式实现,多次发送相同的信号可能只会收到一次 4.子进程具有继承父类信号屏蔽,不能在信 ...

  7. 非常好的一篇对linux信号(signal)的解析

    [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执 ...

  8. Linux移植随笔 tslib

    前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随笔,随笔者,随意用笔写下心得而已,因此不必较真.正如我所欣赏的"乘兴而来,兴尽而返"一样.--估计当年王子猷是赏 ...

  9. 【Linux系统编程】Linux信号列表

    00. 目录 文章目录 00. 目录 01. Linux信号编号 02. 信号简介 03. 特殊信号 04. 附录 01. Linux信号编号 在 Linux 下,每个信号的名字都以字符 SIG 开头 ...

最新文章

  1. hdu 4263(有限制的生成树)
  2. Centos 7 下 Corosync + Pacemaker + DRBD + psc + crmsh 实现 mysql 服务高可用
  3. gis里创建要素面板怎么打开_周末技术流 | 基于GIS的地形可视化分析
  4. Win8.1 JAVA环境配置全过程
  5. Node 环境变量 process.env.NODE_ENV 之webpack应用
  6. Leetcode每日一题:111.minimum-depth-of-binary-tree(二叉树的最小深度)
  7. MySQL可视化工具使用
  8. As a good Java programer
  9. html+css+js:文案馆网页设计
  10. MySQL Order By 使用方法
  11. 哥尼斯堡的“七桥问题”
  12. Win10 时间与Internet时间同步超时
  13. Adaptive icon 一 :理解 Android 的「自适应图标」
  14. OpenFoam安装swak4Foam
  15. 使用EXCEL绘制三维地图(超简单的五分钟绘制地图方法,妈妈再也不用担心我不会画地图啦~)
  16. 分治算法解决问题(c语言)
  17. 全球十大公司物联网战略,一个万物智能的世界即将到来
  18. Linux高性能服务器编程——书籍阅读笔记
  19. 微信小程序怎么样与mysql一起开发_莲米粒是一个基于PHP+MySQL+微信小程序技术栈...
  20. 读安晓辉之《Qt Quick 核心编程》

热门文章

  1. Struts2+JSON特别让人恶心的一个问题
  2. AVL树C++实现(插入,删除,查找,清空,遍历操作)
  3. c++之趣味new代码大家看
  4. mysql str_to_date 字符串转换为日期
  5. 最详细的phpmailer的使用方法
  6. 也许这就是一种技术成就梦想的理解吧
  7. 函数声明和变量声明提升
  8. 【转】python2与python3的主要区别
  9. 工作进度总结汇报01
  10. mysql数据库基本操作练习