Linux中的消息队列是进程间通信的一种方式,通过创建一个消息队列可以完成一个或者多个进程的信息交汇。因此,首先我们要了解消息队列是什么。
消息队列的定义
消息队列的本质其实是一个内核提供的链表,内核基于这个链表,实现了一个数据结构,并且通过维护这个数据结构来维护这个消息队列。向消息队列中写数据,实际上是向这个数据结构中插入一个新结点;从消息队列汇总读数据,实际上是从这个数据结构中删除一个结点。
消息队列的创建
消息队列的创建通过调用msgget()
函数来创建,函数原型为:
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
参数key
相当于文件系统的文件名,msgflg
是一个操作指令,当想要创建一个消息队列时可以填IPC_CREAT | 0644
,前面指的是创建的指令,后面的0644
指的是消息队列的执行权限,因为在Linux下一切皆文件,是文件就有执行权限