上一篇博客中我介绍了system V进程间通信中的内存共享,但是其中还有两
种通信方式:消息队列、和信号量,接下来我将简单介绍一下,消息队列和
信号量以及操作系统是如何看待system V进程间通信的。
1. 消息队列
a. 大致介绍
消息队列会维护一个队列,供两个进程进行进程间通信:它与共享内存不同的就是它的数据是存储在一个节点中,再次存储数据时再创建一个节点链入到顺序表或者链表构成的队列中,关于它的数据存储格式是在一个结构体中,但是这个结构体由用户自定义:
其中第一个成员是用户自定义的类型(例如我要自定义A进程存储进去的数据是A类型ATYPE,我们可以使用宏定义来进行)第二个是用户的存储数据,这个可以是一个数组也可以是一个结构体,而对于数据的访问方式,那自然是由第一个成员的类型来让用户决定的。所以假如我们要让两个进程实现进程间通信的话,使用内存共享我们可能不太方便区分共享内存中的数据究竟是谁要接收,使用消息队列的话我们可以自定义数据的访问方式,当我们需要A进程提取B进程的消息时,我们就可以在队列中遍历寻找数据类型为B进程所时使用的类型,这样就可以区分数据是谁发送供谁使用了: