我有一个用于消息队列进程间通信的密钥,比如key_t = 10
。
如果消息队列已存在且键值为10,我想获取队列ID。
目前我使用下面的代码来查找队列是否存在使用返回错误
msgget((key_t)10,IPC_EXCL|IPC_CREAT|0777)
但我想获得队列ID并需要关闭它。
答案 0 :(得分:1)
您可以使用msgget
而不使用IPC_EXCL
标记来获取现有的邮件队列标识符。
mid = msgget((key_t)10, 0);
然后,使用该标识符,您可以使用带有msgctl
标记的IPC_RMID
删除邮件队列。
编辑:
key_t ftok(char *pathname, char proj_id);