Chinaunix首页 | 论坛 | 博客
  • 博客访问: 375684
  • 博文数量: 124
  • 博客积分: 2911
  • 博客等级: 少校
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-15 15:57
文章分类

全部博文(124)

文章存档

2012年(6)

2011年(26)

2010年(92)

我的朋友

分类: LINUX

2010-07-28 10:55:49

#include
#include
#include
#include
#include
#include
typedef struct
{
    char name[4];
    int age;
}person;

int main (){
    pid_t pid;
    int i;
    person *p_map;
    char temp;
    p_map = (person*)mmap(NULL,sizeof(person)*10,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,-1,0);
    pid = fork();

    if(pid<0)
    {
        perror("fork failed!\n");
        return 0;
    }else if(pid == 0)
    {
        sleep(2);
        for(i = 0;i < 5;i++)
            printf("子进程读取:第%d个人的年龄是:%d\n",i+1,(*(p_map+i)).age);
        (*(p_map)).age = 110;
        munmap(p_map,sizeof(person)*10);
        return 0;
    }else
    {
        temp = 'a';
        for(i = 0; i<5; i++)
        {
            temp += 1;
            memcpy((*(p_map+i)).name, &temp, 2);
            (*(p_map+i)).age = 30 +i;
        }
        sleep(5);
        printf("父进程读取:五个人的年龄和是:%d\n",(*p_map).age);
        printf("解除内存映射....\n");
        munmap(p_map,sizeof(person)*10);
        printf("解除内存映射成功\n");        
    }
}
阅读(1031) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~