一. 信号产生的场景

     1. 用户输入命令, 在shell 启动一个前台进程
     2. 当用户按一下 Ctrl + C 的时候,从键盘产生一个硬件中断
     3. 此时CPU 正在执行这个进程的带代码, 则该进程的执行代码暂停执行, CPU 从用户态切换到内核态处理该硬件中断.
     4. 中断驱动程序将Ctrl + C 解释为一个 SIGIN 信号, 记在该进程的 PCB 中(操作系统给进程法送了一个 SUGIN 信号)
     5. 当操作系统要从内核返回到该进程的代码继续执行之前, 首先要处理PCB中记录的信号, 发现了一个 SUGIN 信号, 而该信号的默认处理动作是终止进程, 所以此时进程直接终止, 不再返回.

注意:

    1. Ctr + C 只能发给一个前台正在运行的进程, 一个命令后加 & 便可以将该进程放在后台取执行, 这样shell就不用等待进程结束便可以启动新的进程
    2. shell 可以一次执行一个前台进程, 但可以一次执行多个后台进程, 只有前台信号才能接受控制键产生的信号
    3. 进程在运行的如何时候都可以接到像 Ctr + C 的这种键盘控制信号而终止, 因此信号相对于进程而言是异步的.

查看信号的命令: kill -l

    其中前 31 个信号属于普通信号, 没有 32 和 33 号信号, Ctrl + C 产生 11 号 SIGSEGV 信号, Ctrl + Z 产生 SIGTSTP 20 号信号, Ctrl + / 产生 SIGQUIT 3 号信号.

二. 信号产生的几种方式

    1. 用户在终端键盘产生中断,终端驱动程序会发送信号给当前前台进程,.
    2. 硬件异常产生中断,如执行除以 0 的操作, 此时 CPU 运算单元产生异常, 内核将这个异常解释为一个 SUGFPE 发送给该前台进程, 或者当程序访问了非法内存时, 此时MMU产生一个异常, 内核将这个异常解释为 SIGSEGV 发送给该进程.
    3. 通过命令给当前进程发送信号 kill -11 test(给test进程发送 11 号信号)
    4. 软件条件产生异常, 如管道读写时, 读端关闭, 此时写端还在继续写, 此时,操作系统会给当前进程发送一个 13 号信号, 进程发现这个信号, 退出.

三. 调用系统函数给信号发送信号

    1.kill -信号编号 进程编号
    2.kill -信号名 进程编号
                
    该进程是一个死循环的程序, 但此时给该进程发送一个11号信号, 这个信号在进程眼里就是一个SIGEGV 信号, 进程收到这个信号的默认执行动作是终止信号, 并且给用户发送段错误提示信息.
    3. kill 命令的函数实现
                                
    其中 pid 指的是该进程的 pid, sig 指的是需要发送的信号的编号.
    kill 函数用来给对应进程发送一个编号为 sig 的信号
    raise 函数用来给当前进程发送一个编号为 signo 的信号
    abort 函数是是当前信号接收到信号而异常终止

四. 软件条件产生信号

                             
    用来设定一个闹钟, 告诉内核在 seconds 秒之后给进程发送一个SIGALRM 信号, 该信号的默认执行动作时终止当前进程. 函数的返回值是 0 或者是以前设定的闹钟时间还余下的秒数.如果将 seconds 设为 0, 表示取消以前设定的闹钟,闹钟的返回值任然是以前设定的闹钟剩余的秒数.

信号的基本概念以及信号的产生相关推荐

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

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

  2. 【数字信号处理】相关系数 ( 相关系数概念解析 | 信号能量常数 | 共轭序列 | 序列在相同时刻的相关性 )

    文章目录 一.相关系数概念 二.相关系数概念解析 1.信号能量常数 2.共轭序列 3.序列在相同时刻的相关性 一.相关系数概念 " 相关系数 " 英文名称是 " Corr ...

  3. 【信号与系统】(一 )信号与系统概述——信号的基本概念与分类

    文章目录 第一章 信号与系统概述 1.1 信号的基本概念与分类 1.1.1 消息.信息.信号 1.1.2 信号的描述 1.1.3 信号的分类 1.1.3.1 确定信号和随机信号 1.1.3.2 连续信 ...

  4. 数据通信选修笔记(一)chapter12 数据通信的基本概念与信号

    共七章,一二章为概念介绍,重点学习内容在三.四.五.六章 总体来说,和计算机网络的知识重叠性很高. chapter1 数据通信的概念 数据通信 Data Communication 发生在人与机,机器 ...

  5. QT中信号槽的概念及使用

    文章目录 信号槽的概念 函数原型 信号槽连接的三种方式 方式一 方式二 方式三 参数传递 全局参数 信号槽传参 信号槽的对应关系 总结 信号槽的概念 信号函数与槽函数是 Qt 在 C++ 的基础上新增 ...

  6. 信号控制基本概念(相位和阶段)

    本科上课时都上过这些,但是后来做科研没做这个方向,时间一长就都忘了,最近实习做信号控制相关,得拾起来,要不然被人嘲笑了.内容主要参考这篇文章,写的挺好的,也很全面,接下来概括下,将这些概念记录下. 1 ...

  7. 信号采样基本概念 —— 5. 加权移动平均滤波(Weighted Moving Average Filtering)

    在上一章,我们介绍了使用滑动窗口以及平均值denoising,那么既然可以使用平均值denoising,那么也必然可以用权重替代均值进行denoising. 文章目录 什么是加权移动平均滤波(Weig ...

  8. 概念篇——信号与信号集

    说明:   本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉.   QQ 群 号:513683159 [相 ...

  9. 信号的基本概念及分类

    信号分类汇总: 确定信号和随机信号 连续信号和离散信号 周期信号和非周期信号 能量信号和功率信号 确定信号:可以用时间函数表示的信号. 随机信号:信号不能用确切的函数描述,只能知道其统计特性. 例子: ...

最新文章

  1. VS2013关于“当前不会命中断点源代码与原始版本不同”的BUG
  2. 利用Eclipse连接JDBC-(SQL Server2008)
  3. mysql instead of_mysqluniqueoptionprefixmyisam_recoverinsteadofmyisam-recover-options的解决方法
  4. 巨坑 之 pip install 和 conda install 的区别 以及 查看 和 修改 虚拟环境下运行路径
  5. github/gitlab同时管理多个ssh key
  6. java观察者设计模式_Java中的观察者设计模式
  7. 在Java中键入Safe SQL
  8. Docker学习四:Docker 网络
  9. SQLLite数据库操作
  10. 创下新的纪录 京东618累计下单金额超3438亿元
  11. CUDA——Windows上CUDA的安装教程
  12. iOS label显示不同颜色的字体
  13. linux pdf 编辑图层,PDF SDK DEMO
  14. 电话机器人源码安装教程
  15. Word批量打印软件/工具
  16. 功能测试用例设计方法分享
  17. html5简单幻灯片图片转换,清新简洁的HTML5幻灯片- SLIDESHOW CANVAS JQUERY
  18. Halcon实战之MLP颜色匹配(一)
  19. Error: Unable to execute “/usr/bin/vmware-uninstall-tools.pl.终极解决方案
  20. 跨越6XX和4XX排名纪实

热门文章

  1. SpringMVC整合MongoDB
  2. Python练习-迭代器-模拟cat|grep文件
  3. syslog可能引起得问题_牙齿经常有问题?可能是这4个坏习惯引起的,要改正
  4. 传说之下地图素材_【开阔眼界】地图上的史记——名著轻松读
  5. 3dobject用什么打开_第一次用开塞露是什么感觉?网友:像打开了新世界的大门
  6. 切换oracle用户impdp,Oracle 12c pdb使用expdp/impdp导入导出
  7. python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...
  8. Windows2008的安装
  9. C语言判断系统是32位还是64位
  10. java enummap_Java EnumMap containsKey()方法与示例