我有一个消息队列进程间通信的密钥,比如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/