C语言中的 linux 信号

本文介绍了信号这一软件中断的概念,包括其产生方式(用户、硬件、程序)、处理方式(忽略、自定义处理函数、默认处理),并指出信号存在的局限性。通过Ctrl+C的具体执行流程示例,详细说明了信号从产生到被处理的整个过程。
摘要由CSDN通过智能技术生成

定义


信号是一种软件中断。

产生:用户/硬件/程序都可以产生信号
处理:不管/自定义signal函数/默认
缺陷:开销大/数量有限/传递信息有限

跟汽车的应急灯差不多。哈哈。

一个 ctrl+c 的执行流程


1 当按下 ctrl+c ,此刻 键盘 产生 硬件中断。
2 cpu 从用户态 切换到 内核态,处理硬件中断。
3 驱动程序 将 ctrl+c 翻译成为 SIGINT 信号,记录到当前进程中的 PCB 中
4 当恢复到用户态的时候,程序首先检查 PCB, 发现 SIGINT 信号,终止程序,不去执行用户代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值