Linux进程间通信程序设计5----消息队列
一、概述
信号通信能够传送信息量有限;管道通信则只能传送无格式的字节流。
消息队列(报文队列):就是一个消息的链表。消息是具有特定格式的记录。
分类:
POSIX消息队列:
系统V消息队列:目前被大量使用
持续性
系统V消息队列是随内核持续的。只有在内核重启或者人工删除时,该消息队列才会被删除。
键值:消息队列在内核的持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,必须提供该消息队列的键值。
键值
#include<sys/types.h>
#include<sys/ipc.h>
key_t ftok(char* pathname,char proj)
功能:返回文件名对应的键值
pathname:文件名
proj:项目名(不为0即可)
打开/创建:
int msgget(key_t key,int msgflg)
key:键值,由ftok获得
msgflg:标志位
IPC_CREAT:创建新的消息队列
IPC_EXCL:与IPC_CREAT一同使用,表示如果要创建的消息队列已经存在,则返回错误。
IPC_NOWAIT:读写消息队列,要求无法得到满足时,不阻塞。
返回值:与键值key相对应的消息队列描述字。