从提供的密钥获取消息队列ID

时间:2016-04-06 09:10:56

标签: c linux unix ipc

我有一个用于消息队列进程间通信的密钥,比如key_t = 10。 如果消息队列已存在且键值为10,我想获取队列ID。 目前我使用下面的代码来查找队列是否存在使用返回错误

msgget((key_t)10,IPC_EXCL|IPC_CREAT|0777)

但我想获得队列ID并需要关闭它。

1 个答案:

答案 0 :(得分:1)

您可以使用msgget而不使用IPC_EXCL标记来获取现有的邮件队列标识符。

mid = msgget((key_t)10, 0);

然后,使用该标识符,您可以使用带有msgctl标记的IPC_RMID删除邮件队列。

编辑:

key_t ftok(char *pathname, char proj_id);