文章目录
-
- 1. 信 介绍
- 2. 信 的产生
-
- 2.1 键盘产生
- 2.2 程序中存在异常
- 2.3 系统调用
-
- ① kill
- ② raise
- ③ abort
- 2.4 软件条件
-
- ① alarm
- 2.5 OS给进程发送信
1. 信 介绍
信 产生之后,是发给进程的,进程要在合适的时候执行对应的动作
进程在没有收到信 的时候,就已经知道了哪种信 对应哪一个动作,进程具有识别信 并处理信 的能力,远远早于信 的产生
进程收到某种信 的时候,并不一定是立即处理的,而是在合适的时候,因为信 随时都有能产生(异步的),但进程当前可能在执行更重要的事
因此信 不能被立即处理的时候,收到的信 需要被保存起来,保存在中,信 的本质也是数据,所以信 的发送就变成了往进程的中写入信 数据,这个操作由操作系统来完成,因而无论我们的信 是如何发送的,本质都是底层在通过操作系统发送的
信 产生前:信 产生的各种方式 -> 信 产生中:信 的保存方式 -> 信 产生后:信 处理的方式
各种信 (64个)
:为一个函数指针
:信 对应的整型值
:修改进程对信 的默认处理动作
注意:注册函数的时候,不会调用这个函数,只有当信 到来的时候,这个函数才会被调用
使用向该进程发出2 信
2 信 无法退出,可以使用退出进程
2. 信 的产生
2.1 键盘产生
信 产生的方式其中一种就是通过键盘产生,注意键盘产生的信 只能用来终止前台进程,加上运行的后台进程不行
一般而言,进程收到信 的处理方式有三种
- 默认动作——如终止自己、暂停等
- 忽略动作——是一种信 处理的方式,只不过动作就是什么也不干
- 自定义动作(信 的捕捉)——如signal方法,就是在修改信 的处理动作由默认动作 -> 自定义动作
进程如果异常的时候,core-dump该位置会被设置为1
我们还需要知道程序是在哪一行崩溃
- 在Linux中,当一个进程推出的时候,它的退出码和推出信 都会被设置(正常情况)
- 当一个进程异常的时候,进程的终止信 会被设置,表明当前进程退出的原因
- 如果必要,操作系统会设置退出信息中的标志位,并将进程在内存中的数据转储到磁盘当中,方便后期调试
打开之后
如何查看异常情况(事后调式)
- 编译时加上选项
- 运行让程序产生异常,生成core文件
- 再用gdb调试该程序
- 在gdb中输入,即可查看异常的详细信息
模拟实现一个kill命令
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!