我的程序使用系统msgqueue for ipc .my code:
key = 0x0000ed79;
if( ( id=msgget(key,0666|IPC_CREAT)) <= 0 )
return false ;
else return true
问题是:
为什么我不能使用id为0的msgqueue?这里是手册页中msgget api返回值的描述,似乎id为0不正确:
如果成功,返回值将是消息队列标识符(非负整数),否则为-1,其中errno表示错误
答案 0 :(得分:0)
如何找到哪个进程使用相同的密钥创建队列?
没有简单的方法可以找到创建队列的进程,但我们可以最后检查发送到队列或从队列接收的进程,也许创建进程就是其中之一(即使没有,也可以识别进程)使用队列可能有帮助),e。 G。对于 msqid 0
ipcs -qi0
显示lspid=… lrpid=…
- 发送/接收消息的最后进程的进程ID
来自关联的消息队列。