深入理解mmap函数

本文详细介绍了Linux中的mmap函数,用于实现进程间通信。通过映射同一块物理内存,父子进程可以共享数据。文中给出了匿名映射和文件映射的示例,并通过strace展示了系统调用过程,证明了mmap在进程间通信中的作用。

函数简介

在Linux操作系统中,进程是资源分配的基本单位。所以说每个进程间有各自独立的存储空间,但是在某些情况下各进程要相互配合来完成特定任务,这样就使得进程间通信变得非常必要。进程间通信方式有多种,当然这不是我们这节要讨论的重点,这节主要说的是mmap函数,它是通过将一块物理内存映射到多个进程的虚拟地址空间上,来完成多个进程对同一块物理内存的读写从而使得进程间能够实现通信。

先看一下mmap函数的函数原型,如下:

参数说明:
                  addr:映射区的开始地址,设置为NULL时表示由系统决定映射区的起始地址。
                  length:映射区的长度。//长度单位是 以字节为单位,不足一内存页按一内存页处理
                  prot:期望的内存保护标志,不能与文件的打开模式冲突。是以下的某个值,可以通过or运算合理地组合在一起
                            PROT_READ //页内容可以被读取
                            PROT_WRITE //页可以被写入
       &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值