消息队列Linux发送信息出错,消息队列创建失败问题

/*************************************************************************/

系统调用:msgget();

原型:intmsgget(key_t

key,int msgflg);

返回值:如果成功,返回消息队列标识符

如果失败,则返回-1:

errno=EACCESS(权限不允许)

EEXIST(队列已经存在,无法创建)

EIDRM(队列标志为删除)

ENOENT(队列不存在)

ENOMEM(创建队列时内存不够)

ENOSPC(超出最大队列限制)

/*************************************************************************/

发现应该是EACCESS错误,msgget包括创建或得到消息队列的功能,得到消息队列是得到key对应的队列ID,报无权限,有可能系统上有重复的非本用户下的队列,造成无权访问的问题。按照这个思路,我加了打印语句(不好的调试方式:>),输出了由ftok创建的key为:16941057,转成16进制得到:0x01028001,然后用linux下查看消息队列的命令:

ipcs -q|grep 8001 果然得到另外一个用户下的消息队列,现在问题转成了为什么key会重复问题,可以是如何根据目录生成的那?

查阅了资料发现:ftok 的原型声明为:

key_t

ftok( char * f

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值