Linux信号相关知识

信号的特质:
信号时软件层面的“中断”,一旦信号产生,无论程序执行到什么位置,必须立即停止运行,处理信号,处理结束,再继续执行后续指令.(故一般把信号的捕捉,放
在变量定义完后,如果放在某些指令之后(如while死循环后),程序都还没读到有信号捕捉,所以接受到信号不会捕捉,而是进行信号的默认处理)
所有的信号的产生和处理都是由内核来完成的。

1.产生信号的几种方式:
按键产生:ctrl+c ctrl+z ctrl+
系统调用:kill(pid,sig) alarm( second )
软件条件产生: 段错误(访问越界内存)、总线错误、浮点错误(0作为除数)等
硬件异常产生:
命令产生:kill 9 pid

1.信号处理方式:默认处理动作 忽略(SIGKILL和SIGSTOP无法忽略和捕捉) 捕捉(用于自定义处理)

2.信号的四要素:信号值 信号名 对应事件(什么事件,会发送该信号) 默认处理动作

3.查看信号:kill -l

4.kill命令或者 kill( pid, signum )函数
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);

5.time 可执行文件 查看可执行文件运行的时间: 总时间=用户空间执行时间+内核空间执行时间+等待时间(等待时间包括cpu/内存/设备文件)
最大的优化,就是IO优化,能大大提供效率,因为一个系统只有一个标准输入输出文件

6.未决:信号从产生到递达之前的状态

7.递达:信号产生并且送达到指定进程,直接被内核处理掉

8.未决信号集:本质是位图(2进制位),用来记录信号的处理状态,该集合中的信号,表示产生但尚未被处理

9.阻塞信号集:本质是位图(2进制位),用于记录信号的屏蔽状态,一旦被屏蔽的信号,在接触屏蔽之前,一直处于未决状态.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值