关于后端:Linux进程间通信IPC的几种方式

概述:

过程间通信(IPC,Inter-Process Communication),指至多两个过程或线程间传送数据或信号的一些技术或办法。过程是计算机系统分配资源的最小单位(过程是分配资源最小的单位,而线程是调度的最小单位,线程共用过程资源)。每个过程都有本人的一部分独立的系统资源,彼此是隔离的。为了能使不同的过程相互拜访资源并进行协调工作,才有了过程间通信。


次要办法:

<font color=”LightSeaGreen”>管道:</font>

分为两种,

软管道: 如 ps -ef | grep xxxx,

硬管道:

<font color=”LightSeaGreen”> 音讯队列:</font>

内核创立一个音讯队列,操作系统中的多个过程都能够操作这个音讯队列.能够向其发送音讯,也可从中接管音讯.

<font color=”LightSeaGreen”> 共享内存:</font>

每个过程都有一个虚拟内存地址和物理内存地址的映射,个别两个过程的映射的物理内存地址是不同的,共享内存即是将其映射的物理内存地址变成一样的.这样两个过程就能够拜访雷同的物理内存,也就能够实现过程之间的通信.

<font color=”LightSeaGreen”> 套接字:</font>

十分常见,如通过3306端口拜访某个近程mysql服务, 我拜访mysql的这个过程,和近程的这个mysql服务的过程之间的通信,就是通过3306端口创立的TCP的套接字.

如果是拜访本机的mysql服务,则不会走TCP套接字,而是走Linux底层的套接字

<font color=”LightSeaGreen”> 信号量:</font>

相似一个计数器.管制多个过程对一个共享资源的拜访.

<font color=”LightSeaGreen”> 信号:</font>

一个过程能够向另一个过程发送一个信号.通过kill -l指令能够列出所有的信号

(64种死法…)

Linux中的信号 大多数作用是把一个过程杀死,于是叫kill了..

tail -f xxx文件时,是会始终是阻塞. 如何完结? 个别会按ctrl+c,

其实该命令就是以后的shell($$能够看到以后shell的pid),向tail -f过程发送了一个信号,该信号值是2,即SIGINT

kill -9 pid, 9号信号是SIGKILL.

如果不加,则默认15号信号SIGTERM(即Terminal)

9号信号即kill信号是不能被捕获的,必须强制进行. 其余信号能够在程序中捕捉到.

ctrl+c : SIGINT

kill不带参数: SIGTERM

KILL -9: SIGKILL


各个编号的含意,可参见

linux kill -l 信号列表

本文由mdnice多平台公布

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理