免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4849 | 回复: 2

[求助]UNIX环境高级编程ipc消息队列-msgctl: Permission denied [复制链接]

论坛徽章:
0
发表于 2007-10-29 14:02 |显示全部楼层
#include "apue.h"
#include <sys/msg.h>
#include <sys/ipc.h>
      
int
main (int argc, char **argv)
{
  struct msqid_ds msd;
  key_t key;
  int msgid;
  int err;
      
  key = ftok (argv[1], 0x28);
  if (key == -1)
    err_sys ("ftok");
  printf ("%d\n", key);
  msgid = msgget (key, IPC_CREAT | IPC_EXCL | 0x666);
  if (-1 == msgid)
    err_sys ("msgget");
  printf ("%x %x\n", msgid, key);
  err = msgctl (msgid, IPC_STAT, &msd);
  if (-1 == err)
    err_sys ("msgctl");

  return 0;
}

[buffalo@jingle apue]$ ./msgqrev oooo
671251234
90004 28027b22
msgctl: Permission denied
我自己创建的ipc消息队列,怎么连自己都有权限问题呢?我看了msgget和msgctl的manpage,没有找到答案,在root下执行程序没有问题,但是在普通用户下就不行,那位兄弟解释一下!

[ 本帖最后由 科技牛 于 2007-10-29 14:04 编辑 ]

论坛徽章:
0
发表于 2007-11-09 23:44 |显示全部楼层
msgid = msgget (key, IPC_CREAT | IPC_EXCL | 0x666);
0x666应该改为0666吧

论坛徽章:
0
发表于 2007-11-14 15:03 |显示全部楼层
0x666 转换为二进制 为11001100110,按照 user group other取值分别为 001,100,110,这样造成创建用户只能执行,群组用户只能读取,其他用户可以读写,哈哈。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP