POSIX 消息队列
消息队列的使用
1. 创建消息队列mq_open(const char *name, int oflag, mode_t mode,struct mq_attr*attr)
Name: 消息队列的名称,以“/”开头
Oflag: 标志,O_RDONLY(只读) O_WRONLY(只写) O_RDWR(可读可写) O_CREAT(创建) O_EXCL (当消息已存在时,返回EEXIST错误到errno中)O_NONBLOCK(设置非阻塞)
Mode: 在oflag中指定O_CREAT时,此参数是需要的。表示创建消息队列的权限,S_IRUSR,S_IWUSR,S_IXUSR,S_IRGRP,S_IWGRP,S_IXGRP,S_IROTH,S_IWOTH,S_IXOTH相或组成或者写成0777(表示rwxrwxrwx)等用八进制表示也可以
Attr: 在oflag中指定O_CREAT时,此参数是需要的。存放消息队列的属性。其中mq_flags为0,表示阻塞,为O_NONBLOCK为非阻塞。
struct mq_attr {
long int mq_flags; /* Message queue flags */
long int mq_maxmsg; /* Maximum number of messages*/
long int mq_msgsize; /* Maximum message size */
long int mq_curmsgs; /* Number of messages currently queued */
long int __pad[4];
};
Maxmsg:消息的个数
Msgsize:消息队列的大小