信号:

信号是通知发生了某种事件的机制,内核和进程都可能会向进程发送各种信
号,进程也可以向自己发送信号。系统定义了一组标准信号类型,每种信号都拥
有唯一的数值和用途。
典型的信号递送是异步的,意味着进程可能会在任何时候被信号中断。在某
些情况下(如硬件产生的信号),信号也可能会被同步递送,意味着信号递送是
可预测的,并且可以在程序执行期间特定时间点重新产生。
信号的默认动作可能是忽略、终止进程(生成或不生成 core dump 文件)、
停止进程执行、继续执行已停止的进程。不同信号类型的默认动作是不一样的。
此外程序可以使用 signal()或 sigaction()显式地忽略一个信号,或者建立程序员自
定义的信号处理器。由于可移植性等原因,我们最好使用 sigaction()来建立信号
处理器。
进程(拥有适当的权限)可以使用 kill()向其它进程发送信号。发送 null 信号
(0)可以检测特定进程 ID 是否正被系统使用。
每个进程都拥有一个信号掩码,也就是当前阻塞递送的信号集。我们可以使
用 sigprocmask()向信号掩码中添加或删除信号。
如果一个信号在被阻塞时接收到,会保持未决直到该信号被解除阻塞。标准
信号不会被排队,也就是说一个信号只会被标记为未决一次,稍后也只会被递送

一次。进程可以使用 sigpending()系统调用来获取当前未决的信号集。

sigaction()系统调用在设置信号部署(当有信号来时,被调用的函数)时,能够提供比 signal()更多的控制选项

和灵活性。首先我们可以指定一组额外的信号,在信号处理器被调用时进行阻塞。
此外还可以使用许多标志来控制信号处理器被调用时的各种动作。例如有些标志
可以选择使用老式的不可靠信号语义(不阻塞导致信号处理器调用的当前信号,
以及调用信号处理器之前重置信号的部署为默认动作)。
使用 pause()可以暂停进程的执行,直到某个信号到达。

注意:信号处理器是异步的,在多线程情况下,要避免使用不可重入的库函数。

实时信号:

  信号发送的次数,但是因为并发的原因,在内核调用进程的时间间隔内,普通信号的调用次数被记录为一次。

  实时信号会维持一个队列,来记录所有的实时信号,但是这个队列长度是有限制的。

  并且实时信号可以携带少量的数据。通过int数据或者携带一个指针(在信号中不常用)。通过sigqueue()系统调用发送实时信号。

同步信号等待:

  首先要阻塞住需要等待的信号,不然它们会调用相应的信号处理器。通过waitsiginfo()函数可以阻塞进程来等待信号。从而实现进程同步。

定时器:

  用setimer()和alarm()可以定时给进程发送信号,它们共享同一进程的同一实时信号

  可以用来实现定时器的其他函数:sleep(), nanosleep(), POSIX时钟用clocktime来计时

最新文章

  1. Codeforces 731C Socks 并查集
  2. Ubuntu14.10搭建C++开发环境
  3. PHP常用框架
  4. [2015.07.27]万峰图片批量处理专家 v8.6
  5. C语言:内存字节对齐详解[转载]
  6. mtr命令
  7. [LeetCode] Longest Palindromic Substring(manacher algorithm)
  8. [css] 自适应布局 移动端自适应
  9. 在Ubuntu6.06 在搭建SVN服务器及在windows建立svn+ssh客户端 (续)
  10. Win10 查看IE的临时目录
  11. Nginx负载均衡SFTP
  12. Firebase能改变什么(对SaaS,BaaS,PaaS,IaaS的解释比较清楚)
  13. double精度的坑与BigDecimal
  14. Ancient Cipher UVa1339
  15. Java 多线程详解(五)------线程的声明周期
  16. CentOS7关闭/开启防火墙出现 Unit iptables.service failed to load
  17. Python操作MongoDB和Redis
  18. 手动安装 Eclipse 插件 Viplugin
  19. Hive json字符串解析
  20. webGL之three.js入门1

热门文章

  1. 源码下载teb
  2. servlet传入多个数据
  3. MySQL创建表的三种方式
  4. 精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南
  5. Node.js安装、webpack 安装步骤Windows
  6. vue-element-admin 怎么改后端 可以调跳过登录并且发送接口请求
  7. fixed 定位元素超出内容 overflow 不滚动
  8. 简述cpu、gpu、fpga和asic四种人工智能芯片的性能
  9. 野火FreeRTOS第九章(任务延时列表)实验意外解决办法
  10. Neo4j删除节点和关系、彻底删除节点标签名(转载备忘)