一、进程间通信的理解
什么是进程间通信?
进程间通信就是进程之间互相传递信息(数据)。
为什么进程之间要通信?
在平时写代码的时候,为了减少代码的复杂性,我们通常会把常使用的某些代码封装成一个个函数。使用函数的话,函数之间也会通过返回值来传递某些数据。
那么在大型的项目中,一个项目通常会分割成多个程序,多个程序运行后,将会产生多个进程。函数之间都需要传递数据,进程之间自然也需要传递数据,通过传递的数据使得项目正常运行,但是进程之间是无法直接传递数据的。
为什么进程之间无法直接传递数据?
这里就要回忆一下虚拟内存了,每个进程都有自己独有的虚拟内存。进程A如果要传递变量M的地址给进程B,假如直接把M的地址给进程B,进程B拿到的其实是虚拟地址,但是用这个地址在进程B自己的虚拟空间中找数据是找不到的。
二、常见的进程间通信方式
因为进程间无法直接传递数据,因此操作系统提供了一些进程间通信方式,使得进程间可以传递数据。
常用的进程间通信方式有:管道、共享内存、消息队列、信号量。不同的通信方式有不同的特点,用来应对不同的场景。
而这些进程间通信方式的本质是一块公共的访问空间,相互之间需要通信的进程可以通过访问这块公共空间来传递或者接收数据。