【Linux操作系统】进程信 (一)

文章目录

    • 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进行处理,非常感谢!

上一篇 2022年9月21日
下一篇 2022年9月21日

相关推荐