分享

共享主存

 TAnGo!! 2011-12-03

/******write.c******/
# include <sys/ipc.h>
# include <sys/shm.h>
# include <sys/types.h>
# include <unistd.h>
typedef struct{
 char name[4];
 int age;
} people;

main(int argc,char** argv)
{
 int shm_id,i;
 int shmdt_id;
 key_t key;
 char temp;
 people *p_map;
 char* name = ".";
 key = ftok(name,0);
 if (key == -1)
 {
  perror("ftok error");
  return;
 }
 shm_id = shmget(key,4096,IPC_CREAT); //调用shmget创建一块共享主存区
 if (shm_id == -1)
 {
  perror("shmget error");
  return;
 }
 p_map = (people*)shmat(shm_id,NULL,0);//将共享主存区附加到自己的主存段
 temp = 'a';
 for (i = 0 ;i < 10 ; i++ )   //向共享主存中写入数据
 {
  temp = temp + 1;
  memcpy((*(p_map + 1)).name,&temp,1);
  (*(p_map+i)).age = 20 + i;
 }
 shmdtid = shmdt(p_map);  //将其从自己的主存段中“删除”出去
 if(shmdtid == -1)  //删除失败
 {
  perror("detach error");
  return;
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多