LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 935|回复: 1

shmget的问题

[复制链接]
发表于 2007-6-2 00:05:04 | 显示全部楼层 |阅读模式
第一次shmat的时候就会出错,不知道是什么原因

请帮忙给看下,多谢了
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/types.h>
  4. #include <sys/ipc.h>
  5. #include <sys/shm.h>
  6. int main(int argc,char *argv[]) {
  7.         int pid;
  8.         key_t mykey;
  9.         int shmid;
  10.         long *shm;
  11.         long *shm2;
  12.         mykey=ftok("file.txt",1);
  13.         if (mykey==-1) {
  14.                 perror("ftok error.\n");
  15.                 return 5;
  16.         }
  17.         shmid=shmget(mykey,4,IPC_CREAT);
  18.         if (shmid==-1) {
  19.                 perror("shmget error.\n");
  20.                 return 5;
  21.         }
  22.         shm=(long *)shmat(shmid,NULL,0);
  23.         if (shm==(void *)-1) {
  24.                 perror("first shmat fail.\n");
  25.                 return 5;
  26.         }
  27.         (*shm)=30;
  28.         shm2=(long *)shmat(shmid,NULL,SHM_RND);
  29.         printf("%d\n",(*shm2));
  30.         return 0;
  31. }
复制代码
发表于 2007-6-2 19:09:26 | 显示全部楼层
刚才试了一下,shmat返回的指针是-1,  用strerror得到的信息是Identifier removed,似乎是和平台的SHM配置有关,我这边也同样的错误,你看看shmat的源码,也许能够找到原因。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表