网站地图提交地址,做网站注意设么,3g门户网站,seo培训优化课程mmap定义为#xff1a;Linux通过将一个虚拟内存区域与一个磁盘上的对象(object)关联起来#xff0c;以初始化这个虚拟内存区域的内容#xff0c;这个过程称为内存映射(memory mapping)。
在LINUX中我们可以使用mmap用来在进程虚拟内存地址空间中分配地址空间#xff0c;创…mmap定义为Linux通过将一个虚拟内存区域与一个磁盘上的对象(object)关联起来以初始化这个虚拟内存区域的内容这个过程称为内存映射(memory mapping)。
在LINUX中我们可以使用mmap用来在进程虚拟内存地址空间中分配地址空间创建和物理内存的映射关系。 mmap() 系统调用的原型 函数原型void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset); 配套函数原型int munmap(void *addr, size_t length); 头文件#include sys/mman.h 返回值成功返回创建的映射区的首地址失败返回宏 MAP_FAILED。
参数介绍 addr: 建立映射区的首地址由 Linux 内核指定。使用时直接传递 NULL。 length 欲创建映射区的大小。 prot 映射区权限 PROT_READ、PROT_WRITE、PROT_READ|PROT_WRITE。 flags 标志位参数(常用于设定更新物理区域、设置共享、创建匿名映射区) MAP_SHARED: 会将映射区所做的操作反映到物理设备磁盘上。 MAP_PRIVATE: 映射区所做的修改不会反映到物理设备。 fd 用来建立映射区的文件描述符。 offset 映射文件的偏移(4k 的整数倍)。 munmap 函数同 malloc 函数申请内存空间类似的mmap 建立的映射区在使用结束后也应调用类似 free 的函数来释放。
返回值成功0 失败-1
https://blog.csdn.net/chumingqian/article/details/124855768
使用示例
#includesys/mman.h
#includefcntl.h
//文件映射到内存
int shareFd fopen(1.txt);//一个文件
unsigned char *srcAddr NULL;
uint32_t buffer_size width * height * sizeof(int32_t);
srcAddr (unsigned char *)mmap(NULL, buffer_size, PROT_READ, MAP_SHARED, shareFd, 0); //将文件映射到地址srcAddr //读取1.txt的内容保存到新的文件
char dumpPath[100] ;
snprintf(dumpPath, sizeof(dumpPath), /data/dump/buffer_%u_frame_%u_%u_%u.bin, sDumpCount, width, height,sizeof(int32_t));
int dumpFd open(dumpPath, O_WRONLY|O_CREAT|O_TRUNC, 0644);
if(dumpFd 0 srcAddr ! NULL) {write(dumpFd, srcAddr, buffer_size);// ALOGD(liuxurun dump writing buffer);close(dumpFd);
}
munmap((void*)srcAddr, buffer_size);