首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

求解答啊解决思路

2013-01-07 
求解答啊!!!#include stdio.h#include errno.h#include fcntl.h#include sys/types.h#include sy

求解答啊!!!
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <string.h>
#include <stdlib.h>
#define NAME "/tmp/lhb/myshm"
                                                                                
int main(int argc,char *argv[])
                                                                                
{
  int shmid;
  key_t key;
  char *w_addr;
                                                                                
  key = ftok(NAME,'a');
  if(key == -1)
  {
   printf("key erro\n");
  }
   printf("key = %d\n",key);
                                                                                
  if(argc != 2)
  {
    printf("argv erro\n");
  }
  shmid = shmget(key,1024,O_RDWR);
  printf("shmid = %d\n",shmid);
  if(shmid == -1)
  {
    printf("shmget erro\n");
    exit(-1);
  }
                                                                                
  w_addr = shmat(shmid,0,0);
  memset(w_addr,0,sizeof(w_addr));
  write(w_addr,argv[1],1024);
  exit(0);
                                                                                


}


  这是创建一个write的共享内存,为什么shmget的返回值会是 -1 ???难道是哪里出错了??? gcc编译又不会报错啊。。。
[解决办法]
共享内存是否已经存在?
不存在需要使用 IPC_CREAT 创建
[解决办法]
shmid = shmget(key,1024,O_RDWR
[解决办法]
IPC_CREAT
[解决办法]
IPC_EXCL);
[解决办法]
shmid = shmget(key, 1024, IPC_CREAT 
[解决办法]
 IPC_EXCL 
[解决办法]
 0666);

热点排行