Linux信 处理详细介绍

Linux信 处理

Linux下的信 处理相关概念与命令代码

        • Linux信 处理
        • 一、基本概念
        • 二、信 捕获
        • 三、进程休眠信
        • 四、信 集和信 阻塞
        • 五、附带数据信息的信 处理
        • 六、定时器

一、基本概念

  1. 中断

    程序接收到消息后中止当前正在执行的程序,转而执行其它任务,等其它任务执行完成后再返回,这种执行模式叫做中断
    中断分为硬件中断软件中断

  2. 是一种软件中断,由操作系统发出,程序接收后会执行相应的操作

  3. 常见的信

    命令 查看所有信

含义 作用
SIGINT(2) Ctrl+c 终止
SIGQUIT(3) Ctrl+ 终止+core
SIGFPE(8) 除零 终止+core
SIGKILL(9) 终止信 终止 不能捕获、忽略
SIGSEGV(11) 非法访问内存 终止+core
  1. 不可靠信 和可靠信

    建立在早期的信 处理机制(1-31)的信 是不可靠信 ,意味着它不支持排队,可能会丢失,如果同一个信 连续产生多次,进程可能只相应一次,但是多个不同的信 ,会按照时间顺序从后往前相应。

    建立在新的信 处理机制上(34-64)(ps:无32,33)的信 是可靠信 。支持排队,信 不会丢失。

  2. 硬件异常:除零、非法访问内存、未定义的指令、总线错误
    软件异常:通过一些命令、函数产生的信

  3. 信 的处理方式

    1. 忽略
    2. 终止进程
    3. 终止进程并产生core文件(记录内存映像)
    4. 停止/挂起
    5. 继续
    6. 捕获并处理 (在信 发生前,先向内核注册一个函数,当信 来临时系统会自动执行该函数)

二、信 捕获

功能:说明信 处理函数的格式

功能:向内核注册一个信 处理函数

:信 编

:函数指针

也可以使用以下参数:

:忽略

:按默认方式处理

返回值:
之前的信 处理方式

注意:
1、SIGKILL(9)、SIGSTOP(19)信 不能被捕获和忽略处理
2、当信 处理完后可能会返回产生信 的代码继续运行,如果我们捕获并处理段错误、算术异常等信 可能会产生死循环,正确的处理段错误、算数异常信 应该是备份数据并直接结束程序
3、有些系统通过signal注册的信 处理函数只能执行一次,如果想要持续有效,可以在信 处理函数中再重新注册一次
4、子进程会继承父进程的信 处理方式,但是通过exec系列函数创建的子进程,会恢复默认的信 处理方式

信 的发送方式:
1、键盘
Ctrl+c
Ctrl+
Ctrl+z 暂停挂起 fg 继续
2、错误
除零
非法访问内存
总线错误
3、命令
kill -信 编 进程
功能:向指定的进程发送信
killall -信 编 进程名
可以给同名进程发送同一个信
4、函数

三、进程休眠信

四、信 集和信 阻塞

信 集:是一种数据类型,定义的变量可以存储多个信
128个字节,每一字节都固定代表了一种信
相关函数:

功能:清空信 集

功能:填满信 集

功能:向信 集set中添加信 signum

功能:从信 集set中删除信 signum

功能:测试信 集中是否存在信
返回值:
不存在
存在
信 非法

信 阻塞
当程序执行到一些特殊操作时,不适合处理信 ,此时可以让内核先屏蔽信 ,等操作执行完成后再解除屏蔽重新发送信
当信 产生时,内核会在其维护的信 表中为对应的进程设置与该信 对应的标记,这个过程叫做递送
从信 产生到完成递送有个时间间隔,处于这个间隔的信 状态称为未决
信 屏蔽阻塞就是让被屏蔽的信 先处于未决状态、暂停递送,当屏蔽解除时在继续递送

功能:设置要屏蔽的信 、这些信 是存储在信 集里面
:信 屏蔽的方式
把set中的信 添加到要屏蔽的信 集里
从信 屏蔽集中删除中的信 解除
把set替换之前的信 屏蔽集
:准备好的信 集
:获取旧的信 屏蔽集

五、附带数据信息的信 处理

六、定时器

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113366 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月25日
下一篇 2022年7月25日

相关推荐