1.管道:管道支持半双工通信方式,数据只能单向流动;只有具有父子关系或者兄弟关系的进程才能使用管道通信。
2.命名管道:与管道相比,它能支持非亲缘关系的通信。
3.消息队列:消息队列是由消息组成的链表,进程A可以向消息队列中写数据,进程B可以从消息队列读取数据,与管道比起来,消息队列能进行全双工通信,且能传递更多信息。
4.信号量:用来控制多个线程对共享数据的访问。
5.共享内存:共享内存就是多个进程都能访问的内存区域。它是一种最快的进程通信方式,一般来说需呀配合信号量进行使用。其原理是一块物理内存地址在映射的时候会映射不同的虚拟地址空间,而不同虚拟地址空间代表不同的进程,所以可以让不同的进程看到这个内存然后进行读写操作。
问题:全局变量进程也能看到能不能实现通信?
不能,因为全局变量在映射的时候,不同进程映射出来的物理地址是不同的。
参考:https://cyc2018.github.io/CS-Notes/#/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86?id=%e8%bf%9b%e7%a8%8b%e9%80%9a%e4%bf%a1
https://blog.csdn.net/cx2479750196/article/details/81150955
https://blog.csdn.net/sinat_21107433/article/details/82809946