进程间通信(IPC)—信号
Posted 五个板栗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程间通信(IPC)—信号相关的知识,希望对你有一定的参考价值。
一、信号的概念
在我们的日常生活中,也是随处可见信号,体育比赛时用的信号枪,你和小伙伴约定的口哨声,古代战争时候使用的烽火等等。信号是信息的载体,它们有这样的特征:简单、不能携带大量的信息、需要满足特定的条件才能发送。这里的信号是指Linux/Unix环境下最古老经典同时也是最主要的通信方式。
二、信号的机制
A和B发送信息,B收到信号之前先执行自己的代码,收到信号之后,不管当前的程序执行到了什么位置都要暂停执行,去处理信号,等到信号处理完毕之后再继续执行自己的程序。
信号是通过软件方式来实现的,实现手段导致信号有很强的延时性。但是对于用户来说,这个演示时间非常短,几乎无法察觉。
每个进程收到的所有信号,都是由内核负责发送的,内核处理。
三、信号相关的事件和状态
产生信号:
1.按键产生:比如:Ctrl+c(终止进程)、Ctrl+z(后台执行)、Ctrl+/;
2.系统调用产生:比如:kill函数、raise函数、abort函数;
3.软件条件产生:比如:定时器alarm;
4.硬件异常产生:比如:非法访问内存(段错误)、除0、内存对齐出错(总线错误);
5.命令产生:如:kill命令;
信号递达:递送到达到进程。
未决:产生和递达之间的状态,主要犹豫阻塞导致的该状态。
成功递达后信号的处理方式:
1.执行默认动作
2.忽略(丢弃)
3.捕捉(调用户处理函数)
阻塞信号集:又叫信号屏蔽字,将某些信号加入到集合,对它们设置屏蔽,再收到该信号,该信号的处理将推后。
未决信号集:
1.信号产生,未决信号集中描述该信号的位立刻翻转为1,表信号处于未决状态,当信号被处理
对应的位翻转为0,这个过程非常的短暂。
2.信号产生后由于某些原因,不能够递达,这类信号的集合叫作未决信号集,在屏蔽解除前,
信号一直处于未决的状态。
四、信号的四要素
1.编号
2.名称
3.事件
4.默认处理动作
五、默认处理动作
1.Term:终止进程
2.ign:忽略信号
3.core:终止进程,生成core文件,查看进程死亡原因,用于gdb调试。
4.Stop:停止进程
5.Cont:继续运行进程
以上是关于进程间通信(IPC)—信号的主要内容,如果未能解决你的问题,请参考以下文章