当前位置: 技术问答>linux和unix
有关mmap()的一个问题
来源: 互联网 发布时间:2016-09-24
本文导语: 函数原型void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 这里的 size_t length 是不是有什么要求 比如说我让lengh = 1, 但发现实际映射区的长度大于这个值 这是怎么回事 | ...
函数原型void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize);
这里的 size_t length 是不是有什么要求
比如说我让lengh = 1, 但发现实际映射区的长度大于这个值
这是怎么回事
这里的 size_t length 是不是有什么要求
比如说我让lengh = 1, 但发现实际映射区的长度大于这个值
这是怎么回事
|
一般是4k
|
但是,就算你的长度不是page的整数倍,只是对你更改的部分有影响。映射的时候是以page为单位的。
|
这个在《unix 环境高级编程》里面又详细介绍,例如我们一般的页大小是512,而我们的length只有12,那么在映射后我们修改的数据只能是12,而后面的500不修改(好像被初始化为0了),这个也解释了为什么映射比length大的原因
|
呵呵。所以LZ的情况,只是对更改的部分有影响。难道我上面说的有什么问题?