共享存储映射mmap
Posted 阿龙亡命天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了共享存储映射mmap相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
//存储映射
int main()
int fd=-1;
int ret=-1;
void* addr=NULL;
//1.以读写的方式打开一个文件
fd=open("txt",O_RDWD);
if(-1==fd)
perroe("open");
return 1;
//2.将文件映射到内存
addr=mmap(NULL,1024,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
if(addr==MAP_FAILED)
perror("mmap");
return 1;
printf("文件存储映射ok...\\n");
//3. 关闭文件
close(fd);
//4.写文件
mmecpy(addr,"1234567890",10);
//5.断开存储映射
munmap(addr,1024);
将txt文件写入1234567890
父子进程使用存储映射通信:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
//存储映射
int main()
int fd=-1;
int ret=-1;
void* addr=NULL;
//1.以读写的方式打开一个文件
fd=open("txt",O_RDWD);
if(-1==fd)
perroe("open");
return 1;
//2.将文件映射到内存
addr=mmap(NULL,1024,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
if(addr==MAP_FAILED)
perror("mmap");
return 1;
printf("文件存储映射ok...\\n");
//3. 关闭文件
close(fd);
//4.创建一个子进程
pid=fork();
if(-1==pid)
perror("fork");
return 1;
//子进程
if(0==pid)
//5.写文件
memcpy(addr,"ABCDEFGHIG",10);
else
//父进程
//等待子进程结束
wait(NULL);
printf("addr:%s\\n",(char *)addr);
//6.断开存储映射
munmap(addr,1024);
====
以上是关于共享存储映射mmap的主要内容,如果未能解决你的问题,请参考以下文章