+ -
当前位置:首页 → 问答吧 → 求助linux普通用户下内存共享(系统V共享)大家进来看看啊!急!!

求助linux普通用户下内存共享(系统V共享)大家进来看看啊!急!!

时间:2011-09-06

来源:互联网

关键代码:
  const char* pszPath = "../";  
  //根据文件名和ID生成一个起标识作用的key
  key = ftok(pszPath, 0); 
  if(key == -1)
  {
  perror("ftok error");
  }
   
  //创建或者打开共享内存
  iShmgID=shmget(key, dwShmSize, IPC_CREAT); 
  if(iShmgID == -1)
  {
  perror("shmget error");
  }
   
  //将共享内存区映射到自己的内存段,
  pstShma=(engineer*)shmat(iShmgID, NULL, 0);
  if((int)pstShma == -1)
  {
  perror("shmat error");
  }

在普通用户下编译会报错:
shmat error: Permission denied
Segmentation fault
shmat 权限不够?能让root给普通用户授怎么的权限就可以了吗? 怎么授权?

要是iShmgID=shmget(key, dwShmSize, IPC_CREAT|0666); 
就会报错:
shmget error: Permission denied
shmat error: Invalid argument
Segmentation fault
现在是shmget 权限不够 shmat 无效的参数

但是在root下面一切OK 我想知道这样的内存共享能在普通用户下面用吗?能的话怎么弄,谢谢来大赐教啊!!感激不敬啊!!

作者: my3g520   发布时间: 2011-09-06

为什么 还是没人啊 !!

作者: my3g520   发布时间: 2011-09-06

shmget error: Permission denied
路径问题?“const char* pszPath = "../";”这个是哪里的路径?普通用户有权限否?

作者: subfate   发布时间: 2011-09-06

应该是路径不对,把路径换一个普通用户也可以访问的路径。

作者: yong_f   发布时间: 2011-09-06