首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mmap(2) vs mmap(3)

mmap(2) vs mmap(3)
EN

Stack Overflow用户
提问于 2009-08-30 17:09:52
回答 1查看 2.6K关注 0票数 7

有人知道mmap(2)mmap(3)之间的区别吗?Man第3节被描述为“本章描述了除第2章中描述的实现系统调用的库函数之外的所有库函数”。mmap(3)不执行系统调用吗?

阅读这两个手册页,我发现mmap(2)似乎接受比mmap(3)更广泛的标志,并声称能够映射设备I/O空间。mmap(3)声称能够将“共享内存对象”和“类型化内存对象”映射到文件中,但没有提到设备I/O。

由于这两个函数具有相同的名称,我甚至不确定如何才能选择一个而不是另一个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-30 17:15:38

mmap(3)应该是POSIX function。它应该在所有方面提供POSIX所要求的语义,即使这与Linux“本机”所做的有所不同。mmap(2)是系统调用,它提供了Linus认为重要的所有细节。当然,C库函数是使用系统调用实现的。

要从字面上调用系统调用(绕过C库),您可以使用<sys/syscall.h>

mmap(3)的实际实现可以在C library中找到。正如您所看到的,它通常将控制直接转移到mmap(2),除非在编译时(对于glibc)选择mmap2(2)作为“后端”。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1354335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档