这一节是为了解释上一节各个信号的产生原因以及其处理行为:
各个信号产生的原因:

1) SIGHUP:  当用户退出shell时,由该shell启动的所有进程将收到这个信号,默认动作为终止进程
2)SIGINT: 当用户按下了< Ctrl+C>组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号。默认动 作为终止里程。
3)SIGQUIT:  当用户按下< ctrl+>组合键时产生该信号,用户终端向正在运行中的由该终端启动的程序发出些信
号。默认动作为终止进程。
4)SIGILL: CPU检测到某进程执行了非法指令。默认动作为终止进程并产生core文件
5)SIGTRAP: 该信号由断点指令或其他 trap指令产生。默认动作为终止里程 并产生core文件。
6 ) SIGABRT: 调用abort函数时产生该信号。默认动作为终止进程并产生core文件。
7)SIGBUS: 非法访问内存地址,包括内存对齐出错,默认动作为终止进程并产生core文件。
8)SIGFPE: 在发生致命的运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等所有的算法错误。默认动作为终止进程并产生core文件。
9)SIGKILL: 无条件终止进程。本信号不能被忽略,处理和阻塞。默认动作为终止进程。它向系统管理员提供了可以杀死任何进程的方法。
10)SIGUSE1: 用户定义 的信号。即程序员可以在程序中定义并使用该信号。默认动作为终止进程。
11)SIGSEGV: 指示进程进行了无效内存访问。默认动作为终止进程并产生core文件。
12)SIGUSR2: 这是另外一个用户自定义信号 ,程序员可以在程序中定义 并使用该信号。默认动作为终止进程。1
13)SIGPIPE: Broken pipe向一个没有读端的管道写数据。默认动作为终止进程。
14) SIGALRM: 定时器超时,超时的时间 由系统调用alarm设置。默认动作为终止进程。
15)SIGTERM: 程序结束信号,与SIGKILL不同的是,该信号可以被阻塞和终止。通常用来要示程序正常退出。执行shell命令Kill时,缺省产生这个信号。默认动作为终止进程。
16)SIGCHLD: 子进程结束时,父进程会收到这个信号。默认动作为忽略这个信号。
17)SIGCONT: 停止进程的执行。信号不能被忽略,处理和阻塞。默认动作为终止进程。
18)SIGTTIN: 后台进程读终端控制台。默认动作为暂停进程。
19)SIGTSTP: 停止进程的运行。按下< ctrl+z>组合键时发出这个信号。默认动作为暂停进程。
21)SIGTTOU: 该信号类似于SIGTTIN,在后台进程要向终端输出数据时发生。默认动作为暂停进程。
22)SIGURG: 套接字上有紧急数据时,向当前正在运行的进程发出些信号,报告有紧急数据到达。如网络带外数据到达,默认动作为忽略该信号。
23)SIGXFSZ: 进程执行时间超过了分配给该进程的CPU时间 ,系统产生该信号并发送给该进程。默认动作为终止进程。
24)SIGXFSZ: 超过文件的最大长度设置。默认动作为终止进程。
25)SIGVTALRM: 虚拟时钟超时时产生该信号。类似于SIGALRM,但是该信号只计算该进程占用CPU的使用时间。默认动作为终止进程。
26)SGIPROF: 类似于SIGVTALRM,它不公包括该进程占用CPU时间还包括执行系统调用时间。默认动作为终止进程。
27)SIGWINCH: 窗口变化大小时发出。默认动作为忽略该信号。
28)SIGIO: 此信号向进程指示发出了一个异步IO事件。默认动作为忽略。
29)SIGPWR: 关机。默认动作为终止进程。
30)SIGSYS: 无效的系统调用。默认动作为终止进程并产生core文件。

至于31)SIGRTMIN~(64)SIGRTMAX:LINUX的实时信号,它们没有固定的含义(可以由用户自定义)。所有的实时信号的默认动作都为终止进程。


进程处理信号行为:
通过查看manpage们可以知道里信号3种处理方式:

SIG_IGN     忽略
SIG_DFL     默认处理方式
a signal handling function     信号捕捉函数

也就是说在进程中处理信号的行为有三种:

1.默认处理动作termcoreignstopcont
2.忽略
3.捕捉(用户自定义信号处理函数)

各种行为的定义以及使用方法见三十二节,其中具体讲解捕捉,对于默认和忽略只用设置即可。(默认和忽略行为请使用ctrl+f搜索)

(三十)信号——信号产生原因以及信号处理行为的简介相关推荐

  1. 已知p是一个指向类a的数据成员m的指针_第三十八章、结构体指针、单向链表简介...

    最近比较忙,一下子有好几天没更新了,今天我们先来了解下结构体指针. 和普通的指针一样,结构体指针就是指向结构体变量的指针. 结构体指针指向的是结构体变量的起始位置. 1. 声明结构体指针 我们用一幅图 ...

  2. Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)...

    简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...

  3. Linux第十节——信号

    目录 由ctrl + c发出的信号 signal 信号的产生 raise about 信号的存储 信号的处理 信号集(sigset_t) sigprocmask和sigpending函数 信号的捕捉: ...

  4. 如何被封掉三个微信号?记我的一次微信调试作死经历

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 讲述调试微信被封三个号的悲惨经历." 对做协议分析的人来说,微信是一道绕不开的坎,分析当然要进行调试. 做群控的,做微商的,做私域 ...

  5. 机顶盒显示无服务器,电视机顶盒无信号是什么原因 电视机顶盒无信号解决方法...

    电视机顶盒无信号是什么原因 ?下面给大家分析下机顶盒无信号的原因以及解决方法,下面一起来看看吧. 1.是不是机顶盒连接的电源线,插头等出现了问题? 机顶盒没信号最首先的解决方法就是检查电源.插头问题, ...

  6. android6没有4g,手机没有4g信号是什么原因?手机没有4g信号解决方法介绍

    随着我们现如今的科技发展,电子产品也跟着一直在迅猛的发展,手机已经从2g,3g变为4g的了,我们使用起来也是更加的顺畅了,那么大家知道我们的手机在使用的过程中突然没有了4g信号,这是什么原因?是我们手 ...

  7. 一部手机怎么登录三个微信号?

    一部手机怎么登录三个微信号? 1.打开手机微信,点击底部我的: 2.在微信我的找到设置,并点击进入: 3.在微信我的设置内找到切换帐号: 4.在微信切换帐号里可选择切换已登录的微信帐号或新添加微信帐号 ...

  8. 【长文】从三十年前说起,最全FPGA架构演进史介绍!

    摘要:自三十多年前问世以来,现场可编程门阵列(FPGAs)已被广泛用于实现来自不同领域的无数应用.由于其底层的硬件可重新配置性,与定制设计的芯片相比,FPGAs具有更快的设计周期和更低的开发成本.FP ...

  9. 【OS学习笔记】三十四 保护模式十:中断和异常区别

    上几篇文章学习了分页机制的一些原理: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 今天继续学习保护模式下的关于中断与异 ...

  10. 嵌入式系统Linux内核开发工程师必须掌握的三十道题

    嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核 ...

最新文章

  1. opencv 1 图像载入、显示和输出
  2. SQL数据库面试题以及答案
  3. jquery 操作ajax 相关方法
  4. cocos2dx3.x使用cocostudio触摸事件不响应的奇葩问题
  5. linux安装web服务器httpd,Linux_linux构建动态WEB服务器安装篇,基本配置 安装web服务器:httpd-2. - phpStudy...
  6. 牛客寒假5-D.炫酷路途
  7. Java如何连接openvas_gas: chinese Gui for openvAS(GAS)
  8. 古董来了:1999年的物件,香港已经回归了,我都上初中了,那么你出生了吗?
  9. 什么是JAX-RS注释? (第3部分)
  10. JAVA面试题(126~170)《下》
  11. HDOJ 1753 明朝A+B
  12. 【剑指Offer】18树的子结构
  13. 机器学习模型部署文章存档
  14. mysql update 批量修改数据_MySQL 中实现数据的批量修改
  15. Java Collection Framework View
  16. 抖音快闪PPT制作教程
  17. 【208.11.21 直播QA】TI C2000 Piccolo单芯片——实现双轴伺服电机和马达控制
  18. 致远OA漏洞学习——A6版本敏感信息泄漏漏洞
  19. 在数据可视化这条路上,除了天天做图表,还有更重要的3件事
  20. KITTI自动驾驶数据集的训练和检测过程(人、车检测案例)、KITTI数据集的TFRecord格式存储、YOLO V3/Yolo V3 Tiny 迁移学习

热门文章

  1. 基于ARM裸机的知识点总结(9)------- S5PV210的定时器、看门狗和RTC
  2. 8K慢直播时代下的茶旅发展
  3. C语言练习-[1005]温度转换
  4. 曾经跨过山和大海的百度AI技术汇,跨进北工大!
  5. 我的RHCE认证考试经历
  6. 线性代数学习笔记——第四十一讲——n维向量空间的子空间
  7. 5G网络架构及其对承载网的影响
  8. python识别人脸的年龄和性别_「年龄识别」人脸属性分析--性别、年龄和表情识别 - seo实验室...
  9. JVM学习笔记(13) 垃圾回收-相关概念
  10. puts和printf的区别