Posix消息队列

概述

消息队列可看做消息链表,线程可在队列中进行消息读写。

在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。

一个进程可以往某个队列写入一些消息,然后终止,再让另一个进程在以后某个时刻读取这些消息。而管道或FIFO的最后一次关闭发生时,仍在该管道或FIFO上的数据将被清除。


posix消息队列特点

对posix消息队列的读总是返回最高优先级的最早消息。

当往一个空队列放置一个消息时,posix消息队列允许产生一个信号或者启动一个线程。


队列中的每个消息具有如下属性:

优先级

消息的数据部分长度

数据本身


消息队列的布局:



mq_open mq_close mq_unlink函数

mq_open 函数创建一个新的消息队列或者打开一个应存在的消息队列。

#include <mqueue.h>

mqd_t mq_open(const char *name,int oflag,.../*mode_t mode,struct mq_attr *attr    */);

name:posix IPC 名字,可能是某个文件系统中一个真正的路径名,也可能不是。

oflag参数:O_RDONLY,O_WRONLY,O_RDWR,O_CREAT,O_EXCEL,O_NONBLOCK

mode:该参数在当创建一个新队列时需要。

常值 说明

S_IRUSR

S_IWUSR

用户(属主)读

用户(属主)写

S_IRGRP

S_IWGRP

(属)组成员读

(属)组成员写

S_IROTH

S_IWOTH

其他用户读

其他用户写


attr:该参数在当创建一个新队列时需要。用于给新队列指定某些属性,若为空指针,则为默认属性。

mq_open返回值:消息队列描述符。







猜你喜欢

转载自blog.csdn.net/u010034085/article/details/79952717