目录
一.什么是信号
生活中,有哪些信号相关的场景呢,比如:红绿灯,闹钟,转向灯等等
1.这里我们要知道,你为什么认识这些信号呢,记住了对应场景下的信号+后续是有”动作“要你执行的
2.我们在我们的大脑中,能够识别这个信号的
3.如果特定信号没有产生,但是我们依旧知道应该如何处理这个信号
4.我在收到这个信号的时候,可能不会立即处理这个信号
5.信号本身,在我们无法立即被处理的时候,也一定要先被临时的记住
结论:什么是Linux信号,本质是一种通知机制,用户or操作系统通过发送一定的信号,通知进程,某些事件已经发生,你可以在后续进行处理。
二.信号如何使用,结合进程,信号结论
1.进程要处理信号,必须具备信号“识别”的能力(看到+处理动作)
2.凭什么进程能够“识别”信号呢,代码是程序员编写的,就比如说你是如何认识红绿灯的,这都是有人告诉你的
3.信号产生是随机的,进程可能正在忙自己的事情,所以,信号的后续处理,可能不是立即处理的
4.进程会临时的记录下对应的信号,方便后续进行处理
5. 在什么时候处理呢,合适的时候(这个后面会说)
6.一般而言,信号的产生相对于进程而言是异步的(什么是异步呢,异步双方不需要共同的时间,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始时有开始位,同时在结束时有停止位。)
三.信号常见的处理方式
1.默认(进程自带的,程序员写好的逻辑)
2.忽略(信号的一种处理方式)
3.自定义动作(捕捉信号)
四.常见信号
1-31普通信号,34-64实时信号。
如何理解组合键变信号:键盘的工作方式是通过:中断方式进行的,当然也能够识别组合键,ctrl+c,OS解释组合键->查找进程列表->前台运行的进程->OS写入对应的信号到进程内部的位图结构中。
如何理解信号被进程保存:进程必须具有保存信号的相关数据结构(位图,unisgned int)PCB内部保存了信号位图字段。
如何理解信号发送的本质:信号位图是在task_struct -> task_struct内核数据结构->OS。
信号发送的本质:OS向目标进程写信号,OS直接修改pcb中的指定的位图结构完成“发送”信号的过程。