文章目录

  • 1.信号的概念
  • 2.通过Ctrl c分析信号
    • 2.1Ctrl c的作用
    • 2.2 signal接口
    • 2.3证明ctrl +c本质是信号
    • 2.4总结
  • 3.信号处理的常见方式
  • 4.信号的产生方式
    • 4.1通过终端按键产生
    • 4.2调用系统函数向进程发送信号
      • 4.3.1调用kill
      • 4.3.2调用raise
        • 4.3.2.1使用演示
        • 4.3.2.2linux中9号信号不能被捕捉
      • 4.3.3调用abort
    • 4.3软件条件产生信号
      • 4.3.1使用演示
      • 4.3.2 利用alarm验证IO对效率的影响
    • 4.4硬件异常产生信号
    • 4.5总结

1.信号的概念

信号是进程之间事件异步的一种方式,属于软中断。通俗一点讲就是OS向特定进程通知某件时间发生采用的一种方式。
一个进程在收到信号之前,就已经知道,当接收到信号时应该怎么去做。就好比行人相对于红绿红,在看到红绿灯之前就已经知道红灯停、绿灯行。

2.通过Ctrl c分析信号

2.1Ctrl c的作用

Ctrl +c 是通过硬件的输入方式中断进程,它的本质也是通过系统向进程发送信号。
在证明Ctrl c本质之前需要知晓Ctrl c的本质是往前台发送信息,在一次会话中只允许打开一个前台进程。

2.2 signal接口

signal的接口是捕获信号,对信号进行重定义
捕捉到了信号才会触发这个函数

2.3证明ctrl +c本质是信号


2.4总结

1.Ctrl c只能给前台发送信号给前台进程,一个命令后面加&表示放到后台运行,这样shell不必等待进程结束就可以接收新的命令,启动新进程

当进程被设置为后台进程时,我们在命令行输入的消息流会和后台进程的信息混合在一起,这是因为bash进程是在前台的,我们可以输入信息,但是显示器只有一个,被两个进程同时使用,说明他是临界资源,而这个临界资源又没有被保护,因此它的数据会发生混乱

2.Shell可以同时运行一个前台进程和多个后台进程,只有前台进程才能接收到键盘输入的组合键信号

3.前台进程可以随时接收一个组合键信号,证明了进程相对于信号是异步的

3.信号处理的常见方式

1.忽略信号
2.指向该信号的默认处理动作
3.捕捉信号,类似上面的捕捉2号信号,要求内核在处理该信号时切换到用户状态下执行

信号产生的时候,并不是被立即处理的,信号产生和新处理的中间有一个时间窗口,有一个信号的记录(信号产生,信号保存,信号生命周期结束)

4.信号的产生方式

4.1通过终端按键产生

前面已经介绍

4.2调用系统函数向进程发送信号

4.3.1调用kill

kill命令是调用kill函数接口竖向的,kill可以给一个指定的进程发送指定的信号,调用成功返回0,失败返回-1


4.3.2调用raise

4.3.2.1使用演示

raise可以给当前进程发送指定的信号(自己给自己发送信号),调用成功返回0,失败-1

4.3.2.2linux中9号信号不能被捕捉

这么多信号肯定要有信号不能被捕捉,因为如果都可以被捕捉,病毒可以将所有信号捕捉更改掉,系统就瘫痪了,因此需要一个信号不能被捕捉,即系统始终拥有对进程的终止能力

4.3.3调用abort

abort使当前进程收到信号而异常终止,给自己发生6号信号

4.3软件条件产生信号

4.3.1使用演示



4.3.2 利用alarm验证IO对效率的影响

4.4硬件异常产生信号

硬件的异常被检测到,并且通知OS,OS会向当前进程发送适当的信号

4.5总结

1、9号信号不能被捕捉
2、所有的信号都需要经过OS发出,因为发送信号是指挥信号干什么,只有管理者才有这个能力,所以所有信号的发出需要经过OS
3、上面介绍的是,信号的触发条件
4、如何表示收到信号:在进程的PCB中保存一张位图,1表示收到信号,0表示没有收到
5、如何表示发送信号:OS发信号只需在PCB中找到位图,将对应的比特位改为1

Linux进程信号——信号的产生相关推荐

  1. linux exec 二程序,二十五、Linux 进程与信号---exec函数

    25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 m ...

  2. linux进程被信号杀死,Linux 命令 - kill: 向进程发送信号

    kill 命令通常用来 "杀死"(终止)进程,它可以用来终止运行不正常的程序或者反过来拒绝终止的程序.kill 命令准确地说并不是 "杀死" 进程,而是给进程发 ...

  3. linux进程被信号杀死,linux杀死进程以及发送或响应信号

    摘要 腾兴网为您分享:linux杀死进程以及发送或响应信号,真还赚,邮币在线,优美图,小t智联等软件知识,以及idevice,cdr条码生成器,二手车闪卖,卡卡日语,微帮手,arpr,萤石云监控,nf ...

  4. Linux 进程通信 -- 信号

    一.概述 信号用于保持进程间的通信,可以备发送到一个进程或者一组进程,发送给进程的这个唯一信息通常是标志信号的一个数.信号可从键盘终端产生.虚拟内存中非法访问系统资源等情况下产生.信号异步发生,收到信 ...

  5. 转载 骏马金龙第9章 Linux进程和信号超详细分析

    本文原创地址:骏马金龙https://www.cnblogs.com/f-ck-need-u/p/7058920.html 9.1 进程简单说明 进程是一个非常复杂的概念,涉及的内容也非常非常多.在这 ...

  6. linux进程接受信号,linux – 一个进程如何知道它已经收到一个信号

    如果我错了,请纠正我这是我对信号的理解: As far as i know, signal generation and signal delivery are 2 different things. ...

  7. linux c 禁止对外通信,Linux c 屏蔽信号、切换信号

    信号导致的问题 不是任何信号我们都需要的,如果遇到我们不想处理的信号,我们怎么避免这个信号? 1.      信号屏蔽 intsigprocmask(int how,//操作方式 SIG_BLOCK屏 ...

  8. Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存

    Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存 参考:<linux编程从入门到精通>,<Linux C程序设计大全>,<unix环境高级编程> ...

  9. linux进程间通讯-信号

    文章目录 进程间通信功能 信号 信号的概念 产生信号的方式 信号的默认(缺省)处理方式 进程接收到信号后的处理方式 kill函数 alarm函数 raise函数 abort函数 pause函数 sig ...

  10. linux进程中对信号的屏蔽,linux进程中的信号屏蔽

    在linux的进程中可以接收到各种的信号,并且如果你不对信号进行处理,linux中的进程就会采用默认的处理方式处理,比如ctrl-c的信号,进程对它的处理就是终止进程的执行. 在linux中,我们也可 ...

最新文章

  1. 装了激光雷达的iPad Pro,还能用鼠标了:苹果新键盘、新iPad Pro、新MacBook Air来了...
  2. JavaScript中null与undefined的比较
  3. 二叉树的层次遍历_【腾讯面试热身题】二叉树层次遍历(动画展示)
  4. 【Python】时间处理:日期减少n年(考虑闰年)
  5. 几位无人驾驶领域的杰出科学家
  6. oracle awr报告生成_5.性能测试 - Oracle体系结构和性能优化简介
  7. 重建二叉树(C++)
  8. 微信小程序顶部tab切换
  9. java逻辑与或非_Java基础——逻辑运算符与或非
  10. 如何学习云计算这一文就够了!
  11. latex转word_最有效率的论文排版利器来了,word排版再见吧~
  12. 八数码问题的A*算法
  13. m4s格式转换mp3_超级详细!如何将B站缓存m4s文件无损转换为mp4格式
  14. smart gesture安装失败_3ds Max 2014 下载与安装步骤
  15. springboot RabbitMQ整合出现Reply received after timeout 异常
  16. 第七十七篇:车辆安全-车载软件C++语言开发指南(AUTOSAR C++)
  17. 单片机方案|口袋秤芯片方案
  18. country code table
  19. uni-app运行微信小程序时文件查找失败的问题
  20. 【转】配置Symbian模拟器支持模拟MMC存储卡

热门文章

  1. php后台腾讯地图显示折线图
  2. 阿里P8整理Mysql面试题答案,助你面试“脱颖而出”
  3. python3思维导图.xmind_我常用的3款脑图工具
  4. 即时通讯源码,包含安卓,iOS,H5,MacOS,PC,Java后端
  5. HEAAN源码(二)
  6. tof相机简介及三维坐标转化,plotly画3D点云
  7. 给生活来一次傅立叶转换
  8. 【QT】QObject简介
  9. 2023 HGAME网络攻防大赛wp
  10. html图片左右转换,jquery实现图片左右切换的方法