2014-11-16 46 views
0

POSIX消息隊列可以由mq_open()創建,它返回mqd_t形式的消息隊列描述符。如果其他進程必須通過mq_notify()或mq_receive()接收消息,則需要消息隊列描述符作爲參數。進程如何知道由另一個進程創建的隊列的消息隊列描述符?

有沒有辦法使用隊列名稱獲取消息隊列描述符?

如果不是,那麼消息隊列描述符在可以開始使用消息隊列之前如何與其他進程通信?

回答

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

消息隊列由兩個進程通過「名稱」(即調用mq_open中的第一個參數)來標識。
打算共享消息隊列的兩個進程必須事先知道要共享的隊列的名稱。

如果使用

int msgget(key_t key, int msgflg);    

鍵:用戶定義的值。
「key」的值在此標識跨多個進程的消息隊列。提前
如果兩個進程需要共享一個消息隊列,他們需要知道的「名稱」(在
mq_open情況下)和「密鑰」(在msgget的情況下):

綜上所述。