mmap()函数关于最后一个参数off_t offset的问题

void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);
这是函数原型
size_t length 第二个参数 映射区的长度,即是fd文件本次截取长度
off_t offset 最后一个参数 文件fd的起始位置

A拷贝到B

分别采用多线程,分段内存映射,A读,B写,中间使用memcpy完成
其中 offset必须为内存页大小的整数倍,这个用法我感觉非常不方便
如何自定义特定进程_PAGE_SIZE??
就是说,这个进程的生命周期内_PAGE_SIZE更改为自定义值,结束后还原为系统默认值?求大神!

1个回答

johnnyjyh
johnnyjyh 最后一个页不被使用的空间将会清零.若要映射非PAGE_SIZE整数倍的地址范围,要先进行内存对齐,强行以PAGE_SIZE的倍数大小进行映射。 这个链接,我只找到这两句概念,没有任何解释,不太理解,而且我的问题是自定义PAGE_SIZE,mmap的使用我已经了解了,链接大篇幅的介绍mmap基本用法
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐