消息队列
消息队列的结构有很多,但在这里讲的队列的结构都是基于链表实现的.
进程间通信的实质是:让不同的进程可以看到相同的资源. |
消息队列的特点:
- 消息队列的通信是通过发送有类型数据块的方法.
- 每个数据块都有一个类型,接收方接受的数据块可以有不同的类型值.
- 消息队列的最大长度有限制.(缺点,因为消息队列必定要占用内存,而如果只发送不接受就会耗内存.)
所以:消息队列提供了一个进程向另一个进程发送了有类型数据块的方法.
实现消息队列的相关函数:
#include <sys/types.h>
#include <sys/ipc.h>
key_t ftok(const char *pathname, int proj_id);
函数作用:为创建消息队列的函数提供参数.
注意:对于这个函数,若函数的参数相同,则函数的返回值相同.
①创建消息队列的函数:
int msgget(key_t key,int msgflg);
msgflg:与文件的权限mode是相同的.
常用的参数有:
IPC_CREAT:不存在就创建,若存在就打开.
IPC_EXCL:若存在,就失败.与上面的搭配使用.