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

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

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

最佳答案

可以使用msgget而不使用IPC_EXCL标志来获得现有的消息队列标识符。

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

然后,使用该标识符,您可以使用带有msgctl标志的IPC_RMID来删除消息队列。
编辑:
key_t ftok(char *pathname, char proj_id);

关于c - 从提供的 key 获取消息队列ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36446509/

10-11 22:36
查看更多