什么是信号?

  • 操作系统信号,英文signal,简称信号。
  • 是IPC中唯一一种异步的通信方法。
  • 它的本质是用软件来模拟硬件的中断机制。
  • 信号用来通知某个进程有某个事件发生了。例如,在命令行终端按下某些快捷键,就会挂起或停止正在运行的程序。另外,通过kill命令杀死某个进程的操作也有信号的参与。

信号的表示方式?

  • 每一个信号都有一个以“SIG”为前缀的名字,例如SIGINT,SIGQUIT,SIGKILL等等。
  • 在操作系统内部,这些信号都由正整数表示,这些正整数称为信号编号。

如何查看操作系统的所有信号?

在Linux操作系统中,通过kill -l来查看所有的信号。

信号如何分类?

  • Linux支持的信号有62种。注意:没有编号为32和33的信号。
  • 编号从1到31的信号属于标准信号。
  • 编号从34到64的信号称为实时信号。

标准信号存在什么问题?

对于同一个进程来说,每种标准信号只会被记录并处理一次。
如果发送给某一个进程的标准信号有多个,他们的处理顺序是不确定。

为什么要有实时信号?

  • 实时信号解决了标准信号的两大问题。同种类的实时信号都可以记录在案,并且他们可以按照信号的发送顺序被处理。
  • 已成为事实的标准信号无法被替换,所有标准信号和实时信号共存。

信号的来源有哪些?

  • 键盘输入,比如ctrl+c
  • 硬件故障
  • 系统函数调用
  • 软件中的非法运算

响应信号的方式有哪些?

  • 忽略
  • 捕捉
  • 执行默认操作

进程响应信号的默认方式有哪些?

  • 终止进程
  • 忽略该信号
  • 终止进程并保存内存信息
  • 停止进程
  • 恢复进程(若进程已停止)

不能自行处理和忽略的信号有哪些?

  • SIGKILL和SIGSTOP这两种信号不能被自行处理,也不能被忽略,对它们的操作只能是系统默认操作。
  • 根本原因是为了向系统超级用户提供使进程终止或停止的可靠方法。
  • 这种保障不论对应用程序还是操作系统来说,都是非常有必要的。

示例1:忽略进程信号

package mainimport ("fmt""os""os/signal"
)func main() {// 创建一个管道,是Notify的第一个参数的类型sigRecv := make(chan os.Signal, 1)// 发送通知signal.Notify(sigRecv)// 从管道中读取信号for sig := range sigRecv {fmt.Printf("Received a signal: %s\n", sig)}
}

示例2:取消通知

package mainimport ("fmt""os""os/signal"
)func main() {// 创建一个管道,是Notify的第一个参数的类型sigRecv := make(chan os.Signal, 1)// 发送通知signal.Notify(sigRecv)// 从管道中读取信号for sig := range sigRecv {fmt.Printf("Received a signal: %s\n", sig)// 取消signal.Stop(sigRecv)close(sigRecv)}
}

Linux中的信号是什么?相关推荐

  1. linux内核定义的常用信号6,Linux中的信号

    在 Linux 中,理解信号的概念是非常重要的.这是因为,信号被用于通过 Linux 命令行所做的一些常见活动中.例如,每当你按 Ctrl+C 组合键来从命令行终结一个命令的执行,你就使用了信号.每当 ...

  2. linux 信号_[入门]谈一谈Linux中的信号

    也许有一些同学有这样的疑问: kill -9 PID 中的 -9 到底是什么意思? Ctrl + C 是为什么可以停止掉运行的程序? 1. 什么是信号? 在计算机科学中,信号是Unix.类Unix以及 ...

  3. linux中的信号是什么意思,linux中信号的基本概念

    1.信号的基本概念: 信号全称为软中断信号,也有人称作软中断,信号机制是进程之间相互传递消息的一种方法. 2.信号的作用: 进程之间可以互相通过系统调用kill发送软中断信号,通知进程发生了某个事件. ...

  4. linux守护实例有什么用,linux中的信号及进程守护的应用实例分享

    一.什么是信号? <1>信号是用来向进程通知事件 <2>每个信号已SIG开头,信号名定义在#include 二.进程收到信号,可以做出三种措施 <1>忽略信号 &l ...

  5. linux中的信号1——信号概述

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.信号是内容受限的一种异步通信机制 (1)信号的目的:用来进程间通信(IPC).进程和内核间的通信: (2)信号 ...

  6. 使用Linux中的信号做一个小小的类似考试系统

    说是考试系统,其实就是玩玩而已,重要的是里面的用法. 使用定时信号来处理超时与不超时的问题.该类似系统中就做了处理 结果显示:左边为不超时,右边为超时                         

  7. linux中的信号3——alarm、pause函数

    以下内容源于朱有鹏<物联网大讲堂>课程的学习,如有侵权,请告知删除. 1.alarm函数 内核以API形式提供的闹钟: 可以为当前进程定义闹钟,时间到了会发出SIGALRM信号. 每个进程 ...

  8. linux中的信号2——进程如何处理信号?

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.signal函数介绍 (1)举例:用signal函数处理SIGINT信号(这个信号由ctrl+c时发出) 默认 ...

  9. Linux中的信号处理原理

          Linux中的信号来自Unix,在发展了30多年之后,许多方面都没有发生太大的变化.信号可以由内核产生,也可以由用户进程产生,并由内核传送给特定的进程或线程(组),若这个进程定义了自己的信 ...

最新文章

  1. 自监督学习现状和未来
  2. linux 服务启动依赖,linux下的系统服务介绍——init、systemd
  3. Can't connect to HTTPS URL because the SSL module is not available
  4. php下正则替换多个br /
  5. 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
  6. python安装第三方库win10_在win里anaconda怎么安装第三方的库
  7. 【Notes8】Linux开发环境,Linux命令,vi命令,/正则,Hash,iNode,文件查找与读取,Linux开机自启动
  8. sql语句中的in用法示例_PHP中的循环语句和示例
  9. 编辑器,webstorm,phpstorm系列配置方法汇总-笔记
  10. java 不退出_(Java)如果我在其外面点击,JPopupMenu将不会关闭
  11. WebStorm配置github
  12. 统计函数应用之SQL 分析函数
  13. OSChina 周一乱弹 —— 只要给网,这种生活我能过一辈子
  14. js 获取url参数_小总结 - JS获取页面URL信息
  15. 图片压缩小工具,jpg,png压缩
  16. JAVA中Object类中的equal方法
  17. 七:Shell脚本:正则表达式与文本处理器三剑客grep,egrep, sed,awk
  18. 计算机网络 一种自上而下的方法,计算机网络-自上而下-和-自下而上-两种教学方法比较分析.pdf...
  19. Matomo API 官方接口详情
  20. 计算机开机定屏,电脑主板开机画面定屏解决方法

热门文章

  1. sqoop报错以及解决:Access denied for user 'root'@'172.16.21.22' (using password: YES)
  2. 波士顿大学计算机与传媒专业,波士顿大学传媒专业在全美教育排名前10
  3. oracle实现sha加密解密,oracle部分字段加密解密 实现模糊搜索
  4. 数学软件四大家族—MATLAB、MathCAD、Maple 和 Mathematica 优缺点比较
  5. 区块链开发公司解析区块链怎样与大数据完美结合
  6. C语言实现二进制与十进制的互转(带小数)
  7. 达梦数据库培训学习学习心得
  8. juniper 认证学习、报名地址汇总
  9. 个人邮箱怎么注册,如何群发邮件?
  10. 分类模型优劣分析指标