首页 > 其他分享 >可靠信号与不可靠信号,大部分文章都是错误的

可靠信号与不可靠信号,大部分文章都是错误的

时间:2023-12-05 16:46:38浏览次数:27  
标签:函数 signal 排队 实时 可靠 信号 文章

关于操作系统的信号,一直是比较难于理解容易出错的地方
关于可靠信号与不可靠信号,网络上大部分文章相互抄袭,都是错的
本文在深度参考了APUE和TLPI,试图说清楚这两者的差异 

一· 可靠信号与不可靠信号

早期的signal函数

  1. 在首次注册前没有办法使用屏蔽字让信号保持未决,此信号也容易丢失
  2. 在每次信号处理时都会重置信号处理函数,所以需要在信号处理函数中重新注册一次,处理中注册前产生的信号会丢失

以上情况就是不可靠信号

后期使用sigprocmask函数和sigaction,从而保证信号不会丢失

二· 非排队信号与排队信号

信号产生就一定要保证通知到进程,这就是可靠信号

  1. 累计产生多次只通知一次,也是可靠的
  2. 如果每产生一次就能够通知一次,这就是排队信号(参考sigqueue)

三· 通用信号与实时信号

  1. 通用信号值使用一个信号屏蔽位提示有没有信号产生,所以是不能排队的
  2. 实时信号是SIGRTMIN~SIGRTMAX之间的信号,标准对实时信号是否排队没有要求,linux对实时信号是排队的

误区

误区一 不能排队的信号就是不可靠信号,错!信号有没有准确达到才是可靠与否的判断标准

误区二 实时信号都是可靠的,错!标准没有这一说法,网上很多文章将不可靠信号等同于通用信号,将可靠信号等同于实时信号,明显是错误的

误区三 signal函数是不可靠的,错!早期的signal实现有不可靠的问题,现在几乎所有的unix系统都是使用sigaction来实现signal的,所以,已经能可靠的处理信号了

标签:函数,signal,排队,实时,可靠,信号,文章
From: https://www.cnblogs.com/fromdtor/p/17877598.html

相关文章

  • 1、开篇 - 编程指导系列文章
          笔者进行软件编程已经有十多年的时间了。这些年,最主要的学习内容在开始的那些年,后面因为转了管理方向,所以其它技术内容就是知道有这么个东西,但是没实际去编程。这段时间没啥事,就想把原来的代码进行下重构,解决一些技术问题,然后,就想着把编程这类事情做一个指导系列的文......
  • 路由器速度慢、信号弱 中国电信科普:关掉Wi-Fi双频合一
    今天中国电信官微科普道:速度慢、信号弱,Wi-Fi老断开?可能是路由器的“Wi-Fi双频合一”没有关,并建议大家关掉。中国电信科普道,路由器有2.4GHz和5GHz两个频段,前者网速慢,但穿墙能力强,后者恰好相反。“双合一”就是将2.4GHz与5GHz的Wi-Fi信号合并为一个网络名称(SSID),路由器会根据算......
  • 如何选择一款便捷可靠的跨网安全数据交换系统?
    随着网络和数据安全的重视程度增加,为了有效地保护内部的核心数据资产,普遍会采用内外网隔离的策略。像国内的政府机构、金融、能源电力、航空航天、医院等关乎国计民生的行业和领域均已进行了网络的隔离,将内部划分成不同的网段,比如内网-外网;研发网-办公网等等,将重要的数据代码放在......
  • 信号自动切换的功能
    1、需求说明 需求:        很多时候会遇到矩阵的自动切换逻辑的问题,以下分享两个比较常用的宏模块说明       自动切换信号源    当检测到有1路信号输入时,两个输出为复制模式    当检测到有2路信号输入时,两个输出分别输出2路信号    当检测到......
  • RabbitMQ 消费者可靠性——业务幂等性
     如何保证业务是幂等的?方案一: 生产者、消费者都配置上setCreateMessageIds(true)。配好后,生产者给MQ发消息,消息就会带上自动生成的id。将来消费者拿到消息后,就可以获取到id,把id保存起来做唯一匹配 代码示例:packagecom.itheima;importorg.springframework.amqp.r......
  • RabbitMQ 消费者可靠性——失败重试机制
     效果:消费者抛异常后,会本地重试,如果本地重试次数达到最大重试次数之后,直接给队列返回reject,队列收到后就会丢弃该消息,也就是策略的第一种但就这样把删了不太好,所以有了失败消息处理策略  第二种ImmediateRequeueMessageRecoverer:消费者抛异常后,会本地重试,如果本地重试......
  • Linux环境Shell编程 ---- 系列文章
    分类 -  Linux / Shell07-Shell运算符06-Shell内置命令05-Shell索引数组变量04-Shell字符串变量03-Shell环境变量深入02-Shell变量01-Shell脚本入门 出处:https://www.cnblogs.com/Icer-newer/category/2349018.html......
  • RabbitMQ 生产者可靠性——生产者重连
     我们配置的这个失败后的重连机制仅仅是发送者连接MQ失败的连接失败重试,如果消息发送抛出异常时不会重试,因为它只是连接失败的重试,不是消息发送的重试 spring:rabbitmq:host:192.168.88.130port:5672virtual-host:/hmallusername:hmallpassword......
  • 公众号文章中添加附件的方法
    微附件的作用是给公众号添加附件的,但是由于公众号本身不提供这种服务,所以微附件发挥了重要的传媒功能,他能够将许多不同类型的附件上传。要添加附件首先要知道如何打开微附件的官网:可以利用下方图片中的网址,在浏览器中打开。其次要知道通过正确的方法上传文件,具体有三个方法,都在下方......
  • FreeRTOS--信号量
    示例源码基于FreeRTOSV9.0.0信号量1.概述消息队列用于传输多个数据,但是有时候只需要传递状态,这个状态值需要用一个数值表示,在这种情况下我们只需要维护一个数值,使用信号量效率更高、更节省内存。信号量用来表示资源的个数,它是特殊的队列实现,队列数据项为空。对于二值信号量......