void mmap(void addr, size_t length, int prot, int flags, int fd, off_t offset);

flags

flags是映射的配置,参数非常多且部分参数可以连用(通过或运算)

MAP_SHARED:

映射内存共享

MAP_SHARED_VALIDATE :

在共享内存基础上,会验证连用的其他配置是否合法

MAP_PRIVATE:

映射内存不共享

连用配置:

MAP_FIXED:

让参数addr有效,即OS会严格按照参数开辟内存
危险:不要轻易使用,物理内存还是OS管理才安全

MAP_FIXED_NOREPLACE :

在上面参数基础上,会保证此次开辟的内存不会占用其他已开辟的共享内存预留空间
若占用,返回异常
ps:老版本内核不会返回异常而降为普通映射方式(即OS决定)
在并发当中使用这个较为安全
**