进程间通信(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.信号产生后由于某些原因,不能够递达,这类信号的集合叫作未决信号集,在屏蔽解除前,

信号一直处于未决的状态。

进程间通信(IPC)—信号(1)_信号

四、信号的四要素

1.编号

2.名称

3.事件

4.默认处理动作

进程间通信(IPC)—信号(1)_进程间通信_02

进程间通信(IPC)—信号(1)_进程间通信_03

五、默认处理动作

1.Term:终止进程

2.ign:忽略信号

3.core:终止进程,生成core文件,查看进程死亡原因,用于gdb调试。

4.Stop:停止进程

5.Cont:继续运行进程

以上是关于进程间通信(IPC)—信号的主要内容,如果未能解决你的问题,请参考以下文章

进程间通信——System V IPC 之进程信号量

进程间通信(IPC)之信号量

进程间通信(IPC)之信号量

IPC 进程间通信

深刻理解Linux进程间通信(IPC)

linux里的ipc是啥意思