C++-msgget 创建队列成功 但是返回值 为0 为什么?

发布于 2016-11-04 16:21:05 字数 584 浏览 1275 评论 1

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想挽留 2017-07-21 20:49:59

我自己回答吧~
if(msqid=msgget(key,IPC_CREAT|0666) < 0)

修改为
if((msqid=msgget(key,IPC_CREAT|0666)) < 0)

运算符的优先级问题。。。。
一着急,胡思乱想 把问题误导了,搞了半天 (~ o ~)~zZ

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文