信号的概念|学习笔记

简介: 快速学习信号的概念

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频信号的概念】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11007


信号的概念

 

内容介绍

一、 信号的概述

二、 如何产生信号

三、 如何处理接收到的信号

 

一、信号的概述

信号是软件中断,它是在软件层次上对中断机制的一种模拟.

什么叫中断?

举例:假如你在家看电影,有人来敲门,你暂停电影去开门,开完门回来继续看电影,去开门这件事称为中断。中断又分为硬件中断和软件中断。

信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。

异步:

通讯双方不需要建立一个同步时钟,消息的出现是随机的。

信号是一种异步通信方式。

进程不必等待信号的到达,进程也不知道信号什么时候到达。

信号可以直接进行用户空间进程和内核空间进程的交互,内核进程可以利用它来通知用户空间进程发生了哪些系统事件。

解释:

如非法访问内存导致出现段错误,程序污染,硬件检测到然后通知内核,内核进程产生信号发送给正在运行的应用程序,应用程序收到信号暂停运行,这就是用户进程和内核进程通过信号交流的例子。

每个信号的名字都以字符SIG开头。

每个信号和一个数字编码相对应,在头文件sigmum.h中,这些信号都被定义为正整数。

信号名定义路径:/usr/include/i386-linux gnu/bits/signum.h

在Linux下,要想查看这些信号和编码的对应关系,可使用命令: kill-l

发信号的目的:通知事件

信号简要说明:

SIGHUP终止进程  终端线路挂断

SIGINT终止进程  中断进程

SIGQUIT建立CORE文件终止进程,并且生成core文件

SIGIL建立 CORE文件  非法指令

SIGTRAP建立CORE文件  跟踪自陷

SIGBUS建立CORE文件  总线错误

SIGSEGV建 立CORE文件  段非法错误

SIGFPE建立CORE文件  浮点异常

SIGIOT建立CORE文件  执行1/O自陷

SIGKILL终止进程  杀死进程

SIGPIPE终止进程  向一个没有读进程的管道写数据

SIGALARM终止进程  计时器到时

SIGTERM终止进程  软件终止信号

SIGSTOP停止进程  非终端来的停止信号

SIGTSTP停止进程  终端来的停止信号

SIGCONT忽略信号  继续执行一个停止的进程

SIGURG忽略信号  1/O紧急信号

SIGIO忽略信号  描述符上可以进行I/O

SIGCHLD忽略信号  当子进程停止或退出时通知父进程

SIGTTOU停止进程 后台进程写终端

SIGTTIN停止进程  后台进程读终端

SIGXGPU终止进程  CPU时限超时

SIGXFSZ终止进程  文件长度过长

SIGWINCH忽略信号  窗口大小发生变化

SIGPROF终止进程  统计分布图用计时器到时

SIGUSR1终止进程  用户定义信号1

SIGUSR2终止进程  用户定义信号2

SIGVTALRM终止进程  虚拟计时器到时


二、如何产生信号

1、当用户按某些终端键时,将产生信号。

例如:终端上按“Ctrl+c” 组合键通常产生中断信号SIGINT、 终端上按"Ctrl+\”键通常产生中断信号SIGQUIT.终端上按"Ctl+z"键通常产生中断信号 SIGSTOP。

image.gif2、硬件异常将产生信号。

除数为0,无效的内存访问等。这些情况通常由硬件检测到,并通知内核,然后内核产生适当的信号发送给相应的进程。

3、软件异常将产生信号。

当检测到某种软件条件已发生,并将其通知有关进程时,产生信号。

解释:

如将一个函数设定三秒钟之后自动给当前进程发送一个信号,这里的“三秒钟”则视为软件条件。

4、调用 kill 函数将发送信号。

注意:

接收信号进程和发送信号进程的所有者必须相同,或发送信号进程的所有者必须是超级用户号。

 

三、如何处理接收到的信号

1、执行系统默认动作

对大多数信号来说,系统默认动作是用来终止该进程。

2、忽略此信号

接收到此信号后没有任何动作。

3、执行自定义信号处理函数

注意:

SHRILL 和 SIGSTOP 不能更改信号的处理方式,因为它们向用户提供了一种使进程终止的可靠方法。

相关文章
|
uml Java 测试技术
带你读《软件架构理论与实践》之一:软件架构概述
本书是上篇基础理论篇,重点介绍软件架构的基本理论和方法,内容包括软件架构的发展历史、软件架构的概念和建模方法、软件架构风格和模式、软件架构描述语言,以及软件架构与敏捷开发之间的关系等。
|
存储 消息中间件 缓存
直播系统聊天技术(七):直播间海量聊天消息的架构设计难点实践
本文将主要从高可用、弹性扩缩容、用户管理、消息分发、客户端优化等角度,分享直播间海量聊天消息的架构设计技术难点的实践经验。
1362 0
直播系统聊天技术(七):直播间海量聊天消息的架构设计难点实践
|
供应链 机器人
什么是RPA?
什么是RPA?
1285 0
|
测试技术 语音技术
天猫精灵开放平台语音识别测试体验
天猫精灵目前来讲不够聪明,“呆头呆脑”,语音识别能够帮助天猫精灵更聪明,但目前还受到较多限制。
1375 0
天猫精灵开放平台语音识别测试体验
|
缓存 编解码 API
淘票票 iOS 客户端:视频本地代理与缓存方案
提高客户端视频起播速度一直是比较关键的优化点。如何提高起播速度?除了通过优化网络、提高服务器带宽、优化视频文件码率帧率等常规方案外,还可以从哪些方面进行优化呢?一起来看看吧!
淘票票 iOS 客户端:视频本地代理与缓存方案
|
弹性计算 运维 NoSQL
高阶实践:强制TAG——必须带标签创建ECS 资源
基于标签(TAG)可以进行资源访问控制,但是我们怎么限制用户只有当有某个标签的时候才允许创建呢?本文接下来就针对ECS(弹性计算) 支持标签的资源:实例(instance)、磁盘(disk)、镜像(image)、网卡(eni)、快照(snapshot)、安全组(securitygroup)、密钥对(keypair)等。
4593 0
高阶实践:强制TAG——必须带标签创建ECS 资源
|
定位技术 Python
元旦C位出道,用微信好友头像拼个中国地图吧!
准备用好友头像拼接成背景图,用中间透明的中国地图加以覆盖,即可生成一个酷炫的照片地图。
2108 0
元旦C位出道,用微信好友头像拼个中国地图吧!
|
人工智能 算法 前端开发
揭秘五子棋AI设备的炼成:wujian100 SoC助力人机对弈(上)
技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。
990 0
揭秘五子棋AI设备的炼成:wujian100 SoC助力人机对弈(上)
|
机器学习/深度学习 弹性计算
ECS:利用ECS进行深度学习详细攻略
ECS:利用ECS进行深度学习详细攻略
ECS:利用ECS进行深度学习详细攻略
|
人工智能 达摩院 自然语言处理
淘宝直播“一猜到底”——移动端实时语音识别技术方案及应用
过去一年淘宝直播快速发展,截止2020年9月底,80个淘宝直播产业基地在全国落地开花,从农村走出10万农民主播,直播真正意义上成为帮助商家和消费者完成交易的利器,同时通过各种互动玩法让直播购物变得有趣好玩。在2020年双11开始阶段,淘宝直播App升级了18年直播答题「点题成金」的玩法,推出「一猜到底」新玩法。如果说传统的直播答题是「选择题」,一猜到底的玩法更像是几万人同时在线的「抢答题」,将答题方式从文字选择升级成语音抢答,给出猜中价格高低提示,让用户增加了更多的参与的乐趣。
27279 0
淘宝直播“一猜到底”——移动端实时语音识别技术方案及应用