Linux 进程通信之POSIX消息队列

参考: https://blog.csdn.net/anonymalias/article/details/9799645

man mq_open

#include <fcntl.h>           /* For O_* constants */       

#include <sys/stat.h>        /* For mode constants */       

#include <mqueue.h>

       mqd_t mq_open(const char *name, int oflag);       

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

       Link with -lrt.

name:表示消息队列的名字,它符合POSIX IPC的名字规则。

oflag:表示打开的方式,和open函数的类似。有必须的选项:O_RDONLYO_WRONLYO_RDWR,还有可选的选项:O_NONBLOCKO_CREATO_EXCL

mode:是一个可选参数,在oflag中含有O_CREAT标志且消息队列不存在时,才需要提供该参数。表示默认访问权限。可以参考open

attr:也是一个可选参数,在oflag中含有O_CREAT标志且消息队列不存在时才需要。该参数用于给新队列设定某些属性,如果是空指针,那么就采用默认属性

 

mq_open返回值是mqd_t类型的值,被称为消息队列描述符。

#include <bits/mqueue.h>


typedef int mqd_t;

 struct mq_attr {
  long mq_flags;       /* Flags (ignored for mq_open()) */
  long mq_maxmsg;      /* Max. # of messages on queue */
  long mq_msgsize;     /* Max. message size (bytes) */
  long mq_curmsgs;     /* # of messages currently in queue (ignored for mq_open()) */
};

 

未完待续...

 

posted @ 2019-04-09 15:34  HenryLiuY  阅读(113)  评论(0)    收藏  举报