C++-msgget 创建队列成功 但是返回值 为0 为什么?
key_t key;
int msqid;
key = ftok(".",100);
if(msqid=msgget(key,IPC_CREAT|0666) < 0)
{
printf("消息队列创建失败n");
pid_t pr = wait(NULL);
return 0;
}
printf("create msgqueue msgqueueid=%dn",msqid);
运行输出:
create msgqueue msgqueueid=0
检查主机ipcs队列信息情况 如下:
$ ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
0x640080f0 163840 aigwRpt 666 0 0
表明队列创建成功
问:为什么msgget不能返回正确的 msgqid ,返回0?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我自己回答吧~
if(msqid=msgget(key,IPC_CREAT|0666) < 0)
修改为
if((msqid=msgget(key,IPC_CREAT|0666)) < 0)
运算符的优先级问题。。。。
一着急,胡思乱想 把问题误导了,搞了半天 (~ o ~)~zZ