mmap()函数可以将内存的一块地址空间映射到进程空间的指定地址中。
同样的也可以利用其开启一块共享的内存空间。(与malloc类似)
开启一个子进程,与父进程利用mmap共同管理一块内存空间。
#include<stdlib.h>
#include<sys/mman.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#define MEMSIZE 1024int main()
{char *ptr;pid_t pid;ptr = (char *)mmap(NULL,MEMSIZE,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,-1,0);if(ptr == MAP_FAILED){perror("mmap()");exit(0);}pid = fork();if(pid<0){perror("fork()");munmap(ptr,MEMSIZE);exit(1);}if(pid == 0) //child write{strcpy(ptr,"Hello");munmap(ptr,MEMSIZE);exit(0);}else //parent read{wait(NULL);puts(ptr);munmap(ptr,MEMSIZE);exit(0);}
}