头文件:
mqueue.h
库:
rt--------librt.so
编译的时候加-lrt
查看POSIX消息队列所有函数:
man mq_overview
结构体:
struct mq_attr{
mq_flags;
——标志:
————在mq_open创建时被初始化;
————在mq_setattr中设置;
————其值为0(阻塞)或者O_NONBLOCK(非阻塞)。
mq_maxmsg;
——队列的消息个数最大值:
————只能在mq_open创建时被初始化。
mq_msgsize;
——队列中每个消息的最大值:
————只能在mq_open创建时被初始化。
mq_curmsgs:
——当前队列的消息个数:
————在mq_getattr中获得。
}
查看消息队列文件:
创建的消息队列在/dev/mqueue中存放。如果没有需要建立一个。
建立方法:
依次输入命令:
mkdir /dev/mqueue //创建文件夹
mount -t mqueue none /dev/mqueue//挂载
函数:
创建消息队列:
mqd_t mq_open(const char* name, int oflag, mode_t mode, struct mq_attr* attr);
参数:
name:
posix IPC名字。(必须以/开头,且后面不能再含有/)
oflag:
标志。
标志——————————作用
O_CREAT———————没有该对象则创建
O_EXCL————————如果O_CREAT指定,但name不存在,就返回错误
O_NONBLOCK—————以非阻塞方式打开消息队列
O_RDONLY———————只读
O_RDWR————————读写
O_WRONLY———————只写
mode:
权限——————作用
S_IWUSR——用户/属主写
S_IRUSR——用户/属主读
S_IWGRP——组成员写
S_IRGRP——组成员