操作系统:10 信号处理

基本概念:

    1、中断

        当程序接收到消息后中止了当前正在执行的程序,转而执行其他的任务,等其他任务执行完成后可能再返回继续执行,这种执行模式称为中断执行

        分为硬件中断和软件中断

        硬件中断由外设硬件产生的中断,例如键盘、鼠标都可以产生,可以屏蔽

        软件中断是程序执行了中断指令后产生的中断

    2、信号

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

    3、常见的信号

        kill -l 显示所有信号

        SIGINT (2)  Ctrl+c  终止

        SIGQUIT(3)  Ctrl+\  终止+core(内存映像 内存崩溃)

        SIGFPE(8)   除0\溢出 终止+core

        SIGKILL(9)  用于杀死进程   终止

        SIGSEGV(11) 非法访问内存   终止

    4、不可靠信号和可靠信号

        建立在早期的信号处理机制上的信号(1-31),称为不可靠信号

            不支持排队机制,可能会丢失信号,如果同一个信号连续发送多次,进程可能只接受到了一次

        建立在新的信号处理机制上的信号(34~64),称为可靠信号

            支持排队机制,如果信号连续发送,也不会丢失

    5、信号的来源

        硬件异常:除0、非法访问内存、使用了未定义的指令、总线错误

        软件异常:通过一些命令、函数产生信号

    6、信号的处理

        ① 忽略

        ② 终止进程

        ③ 终止进程+产生core文件

        ④ 捕获并处理信号(在信号发出前,向内核注册一个信号处理函数,绑定该信号与信号处理函数,当信号发出后,会执行信号处理函数)

信号捕获和注册

    typedef void (*sighandler_t)(int);

    注意:信号处理函数的格式

        参数int表示是导致执行该函数的信号的ID

    sighandler_t signal(int signum, sighandler_t handler);

    功能:向内核提出绑定一个信号处理函数

    signum:信号编号

    handler:信号处理函数函数名

        还可以写成:

        SIG_IGN 忽略处理

        SIG_DFL 按默认方式处理

    返回值:

        返回绑定之前的信号处理函数指针,一般用于记录还原

    注意:有个别操作系统通过signa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就酱77叭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值