(三十)信号——信号产生原因以及信号处理行为的简介
这一节是为了解释上一节各个信号的产生原因以及其处理行为:
各个信号产生的原因:
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搜索)
(三十)信号——信号产生原因以及信号处理行为的简介相关推荐
- 已知p是一个指向类a的数据成员m的指针_第三十八章、结构体指针、单向链表简介...
最近比较忙,一下子有好几天没更新了,今天我们先来了解下结构体指针. 和普通的指针一样,结构体指针就是指向结构体变量的指针. 结构体指针指向的是结构体变量的起始位置. 1. 声明结构体指针 我们用一幅图 ...
- Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)...
简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...
- Linux第十节——信号
目录 由ctrl + c发出的信号 signal 信号的产生 raise about 信号的存储 信号的处理 信号集(sigset_t) sigprocmask和sigpending函数 信号的捕捉: ...
- 如何被封掉三个微信号?记我的一次微信调试作死经历
点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 讲述调试微信被封三个号的悲惨经历." 对做协议分析的人来说,微信是一道绕不开的坎,分析当然要进行调试. 做群控的,做微商的,做私域 ...
- 机顶盒显示无服务器,电视机顶盒无信号是什么原因 电视机顶盒无信号解决方法...
电视机顶盒无信号是什么原因 ?下面给大家分析下机顶盒无信号的原因以及解决方法,下面一起来看看吧. 1.是不是机顶盒连接的电源线,插头等出现了问题? 机顶盒没信号最首先的解决方法就是检查电源.插头问题, ...
- android6没有4g,手机没有4g信号是什么原因?手机没有4g信号解决方法介绍
随着我们现如今的科技发展,电子产品也跟着一直在迅猛的发展,手机已经从2g,3g变为4g的了,我们使用起来也是更加的顺畅了,那么大家知道我们的手机在使用的过程中突然没有了4g信号,这是什么原因?是我们手 ...
- 一部手机怎么登录三个微信号?
一部手机怎么登录三个微信号? 1.打开手机微信,点击底部我的: 2.在微信我的找到设置,并点击进入: 3.在微信我的设置内找到切换帐号: 4.在微信切换帐号里可选择切换已登录的微信帐号或新添加微信帐号 ...
- 【长文】从三十年前说起,最全FPGA架构演进史介绍!
摘要:自三十多年前问世以来,现场可编程门阵列(FPGAs)已被广泛用于实现来自不同领域的无数应用.由于其底层的硬件可重新配置性,与定制设计的芯片相比,FPGAs具有更快的设计周期和更低的开发成本.FP ...
- 【OS学习笔记】三十四 保护模式十:中断和异常区别
上几篇文章学习了分页机制的一些原理: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 今天继续学习保护模式下的关于中断与异 ...
- 嵌入式系统Linux内核开发工程师必须掌握的三十道题
嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核 ...
最新文章
- opencv 1 图像载入、显示和输出
- SQL数据库面试题以及答案
- jquery 操作ajax 相关方法
- cocos2dx3.x使用cocostudio触摸事件不响应的奇葩问题
- linux安装web服务器httpd,Linux_linux构建动态WEB服务器安装篇,基本配置 安装web服务器:httpd-2. - phpStudy...
- 牛客寒假5-D.炫酷路途
- Java如何连接openvas_gas: chinese Gui for openvAS(GAS)
- 古董来了:1999年的物件,香港已经回归了,我都上初中了,那么你出生了吗?
- 什么是JAX-RS注释? (第3部分)
- JAVA面试题(126~170)《下》
- HDOJ 1753 明朝A+B
- 【剑指Offer】18树的子结构
- 机器学习模型部署文章存档
- mysql update 批量修改数据_MySQL 中实现数据的批量修改
- Java Collection Framework View
- 抖音快闪PPT制作教程
- 【208.11.21 直播QA】TI C2000 Piccolo单芯片——实现双轴伺服电机和马达控制
- 致远OA漏洞学习——A6版本敏感信息泄漏漏洞
- 在数据可视化这条路上,除了天天做图表,还有更重要的3件事
- KITTI自动驾驶数据集的训练和检测过程(人、车检测案例)、KITTI数据集的TFRecord格式存储、YOLO V3/Yolo V3 Tiny 迁移学习