【问题标题】:How can a process get to know the message queue descriptor for the queue created by another process?一个进程如何知道另一个进程创建的队列的消息队列描述符?
【发布时间】:2015-01-13 11:35:12
【问题描述】:

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

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

如果不是,消息队列描述符是如何与其他进程通信的,然后才能开始使用消息队列?

【问题讨论】:

    标签: posix ipc message-queue


    【解决方案1】:
     mqd_t mq_open(const char *name, int oflag);
    

    消息队列由两个进程通过“名称”标识,即调用 mq_open 的第一个参数。
    打算共享消息队列的两个进程必须事先知道要共享的队列的名称。

    如果你使用

    int msgget(key_t key, int msgflg);               
    

    key:用户定义的值。
    这里“key”的值标识了一个跨多个进程的消息队列。

    总结一下:
    如果两个进程需要共享一个消息队列,它们需要知道“名称”(以防
    mq_open)和“key”(如果是 msgget)提前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      相关资源
      最近更新 更多