linux – mmap(2)vs mmap(3)
发布时间:2020-12-13 16:57:41 所属栏目:Linux 来源:网络整理
导读:有谁知道mmap(2)和mmap(3)之间的区别是什么?第3节描述为“本章描述了除第2章中描述的库函数之外的所有库函数,它们实现了系统调用.” mmap(3)不执行系统调用吗? 阅读这两个手册页,我看到mmap(2)似乎接受了比mmap(3)更广泛的标志,并声称能够映射设备I / O空
有谁知道mmap(2)和mmap(3)之间的区别是什么?第3节描述为“本章描述了除第2章中描述的库函数之外的所有库函数,它们实现了系统调用.” mmap(3)不执行系统调用吗?
阅读这两个手册页,我看到mmap(2)似乎接受了比mmap(3)更广泛的标志,并声称能够映射设备I / O空间. mmap(3)声称能够将“共享内存对象”和“类型化内存对象”映射到文件中,但未提及设备I / O. 由于这两个函数具有相同的名称,我甚至不确定如何选择一个而不是另一个. 解决方法
mmap(3)应该是
POSIX function.它应该在所有方面提供POSIX强制要求的语义,即使它与Linux“本机”的做法不同. mmap(2)是系统调用,提供了Linus认为重要的所有铃声和口哨声.当然,C库函数是使用系统调用实现的.
要从字面上调用系统调用(绕过C库),可以使用< sys / syscall.h>. mmap(3)的实际实现可以在C library中找到.正如你所看到的,它通常直接将控制转移到mmap(2),除非在编译时(glibc),mmap2(2)被选为“后端”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |