linux – mmap(2)vs mmap(3)

前端之家收集整理的这篇文章主要介绍了linux – mmap(2)vs mmap(3)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有谁知道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)被选为“后端”.

猜你在找的Linux相关文章