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=%d\n",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?

多线程 C++

蛋黄酱王子 11 years, 3 months ago

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

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

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

兰州烧饼不解释 answered 11 years, 3 months ago

Your Answer