内容来源于网络总结。
1、信号三个特征:
1)简单
2)不能携带大量信息
3)需要满足一定的条件才能执行
2、信号与中断很像,当进程程序执行过程中,收到信号,进程马上处理信号,处理完信号后再继续执行剩下的代码,所以,信号又称为软中断,时钟中断称为硬中断(通过硬件实现的)。
3、信号是由内核产生,并由内核进行处理。
4、产生信号的五种形式:
1)按键产生,如 ctrl +c、ctrl+z,ctrl+\
2)系统调用产生,如kill函数,raise函数,abort函数
3)软件条件产生,如定时器alarm,调用函数,开始计时,时间到,发送信号
4)硬件异常产生,如:非法访问内存(段错误)、除0(浮点数例外)、内存对齐出错(总线错误)
5)命令产生,如kill命令
5、信号处理三种方式
1)执行默认动作
2)忽略(丢弃)
3)捕捉(调用户处理函数)
其中默认动作有5种:
1)Term :终止进程
2)Ign:忽略信号(默认即对该种信号忽略操作)
3)Core:终止进程,并生成Core文件,(查验进程死亡原因,用于gdb调试)
4)Stop :停止(暂停)进程
5)continue:继续运行进程
6、信号的2种状态
递达:递送并且到达进程。
未决:信号产生和递达之间的状态。主要由于阻塞(屏蔽)导致该状态
即阻塞信号集(信号屏蔽字)----->决定着未决信号集 :某信号在阻塞信号集中为1,即该信号被阻塞了,则该信号在未决信号集里为1(即未递达)
正常情况下,信号在未决信号集里是由0快速变为1,又快速变为0的。
7、信号的四要素:
信号名+信号编号+信号默认处理动作+信号对应的事件(事件发生时才会发生)
使用 kill -l 查看所有的信号
34-64 为实时信号,一般在嵌入式开发中使用,我们不考虑;
1-31为常规信号,需要掌握常用信号的四要素。
有3个编号的,我们取中间值,对应x86和arm;边上2个是对应别的cpu架构下的。