首页 > 编程语言 > 详细

linux c++(mmap)

时间:2021-05-05 17:38:05      阅读:15      评论:0      收藏:0      [点我收藏+]
addr:	传NULL
length:	映射区的长度
prot:
	PROT_READ 可读
	PROT_WRITE 可写
flags:
	MAP_SHARED 共享的,对内存的修改会影响原文件
	MAP_PRIVATE 私有的
fd:		文件描述符,open打开一个文件
offset:	偏移量0或着4K的整数倍
返回值:
	成功 返回可用的内vu你首地址
	失败	返回MAP_FAILED
void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);

释放映射区
addr:	传mmap的返回值
leng:	mmap创建的长度
返回值:
	成功 0
	失败 -1
int munmap(void *addr, size_t length);
  • 1.如果更改mem变量的地址,释放的时候munmap,传入mem还能成功吗?
  • 不能
  • 2.如果对mem越界操作会怎么样?

  • 文件的大小对应社区操作有影响,尽量避免

  • 3.如果文件偏移量随便填个数会怎么样?

  • offset必须是4K的整数倍
  • 4.如果文件描述符先关闭,对mmap映射有没有影响?
  • 没有影响
  • 5.open的时候,可以新创建一个文件来创建映射区吗?
  • 不可以用大小为0的文件,给文件设置大小ftruncate(fd,offset);
  • 6.open文件选择O_WRONLY,可以吗?
  • 不可以,没有权限
  • 7.当选择MAP_SHARED的时候,open文件选择O_RDONLY,prot可以选择PROT_READ|PROT_WRITE吗?
  • 不可以,没有权限,SHARED的时候映射区的权限 <= open文件的权限
  • 8.mmap什么情况下会报错?
  • 以上情况都会报错

linux c++(mmap)

原文:https://www.cnblogs.com/lodger47/p/14731558.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!