朋友们、伙计们,我们又见面了,本期来给大家带来信号和信号的产生相关代码和知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!
C 语 言 专 栏:C语言:从入门到精通
数据结构专栏:数据结构
个 人 主 页 :stackY、
C + + 专 栏 :C++
Linux 专 栏 :Linux
目录
1. 信号概念
从生活的角度来说:
道路边的红绿灯信号、上下课的铃声、古时候的狼烟、旗语、手机的来电铃声等等;
当这些信号出现的时候我们可以识别并下意识的做出对应的反应。
在Linux角度来说:
在命令行输入kill -l就可以查看系统可支持的信号列表;
当我们程序运行起来,我们直接使用Ctrl + c 就可以终止进程,这也叫做信号。
- ① 信号没有产生的时候,其实我们已经知道怎么来处理这个信号;
- ② 信号什么时候来,我们并不清楚,信号的到来相对于我目前做的工作来说是异步产生的;
- ③ 信号产生了,我们不一定要立即处理他,而是等到合适的时机来处理;
- ④ 信号到来到我要处理信号的期间,我们需要对已经到来的信号进行暂时保存。
信号是向目标进程发送通知消息的一种机制。
2. 信号的产生
在谈论信号的产生之前先来了解一下Linux中的前、后台进程:
① 前台进程
在命令行中我们输入./exe启动一个进程时启动的是前台进程;
我们自己的程序以前台进程的方式运行,此时我们输入指令时是没有任何效果的!
shell也是一个进程,我们使用命令行时使用的就是shell这个前台进程,所以当使用./exe运行程序时,OS就会自动将shell放到后台,前台进程只能有一个。
一般情况下:Ctrl + c 终止前台进程
Ctrl + \ :终止前台进程
② 后台进程
在命令行输入./exe & 以后台程序的方式运行;
后台进程可以有多个,使用 jobs命令查看所有的后台进程:
使用 fg 任务编号:将指定的后台进程提到前台
前台进程不能被暂停,如果我们正常运行起来的前台进程使用Ctrl + z时暂停,会将该进程必须放到后台&#