进程如何知道另一个进程创建的队列的消息队列描述符?

时间:2014-11-16 13:57:47

标签: posix ipc message-queue

可以通过mq_open()创建POSIX消息队列,该队列返回mqd_t形式的消息队列描述符。如果某个其他进程必须通过mq_notify()或mq_receive()接收消息,则它需要消息队列描述符作为参数。

有没有办法使用队列名称获取消息队列描述符?

如果没有,消息队列描述符在开始使用消息队列之前如何与其他进程通信?

1 个答案:

答案 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的情况下)提前。