可以通过mq_open()创建POSIX消息队列,该队列返回mqd_t形式的消息队列描述符。如果某个其他进程必须通过mq_notify()或mq_receive()接收消息,则它需要消息队列描述符作为参数。
有没有办法使用队列名称获取消息队列描述符?
如果没有,消息队列描述符在开始使用消息队列之前如何与其他进程通信?
答案 0 :(得分:0)
mqd_t mq_open(const char *name, int oflag);
消息队列由两个进程通过" name"标识,即调用mq_open的第一个参数。
打算共享消息队列的两个进程必须事先知道要共享的队列的名称。
如果您使用
int msgget(key_t key, int msgflg);
键:用户定义的值。
" key"的值这里标识跨多个进程的消息队列。
总结:
如果两个进程需要共享一个消息队列,他们需要知道" name" (如果是
mq_open)和"键"(在msgget的情况下)提前。