UNIX高级编程--内存映射
创始人
2024-05-28 21:50:23
0

注意事项

  1. 如果对 mmap 的返回值(ptr)做++操作 (ptr++),munmap 是否能成功?
void *ptr=mmap(...)
ptr++; 可以对其进行 ++操作
munmap(ptr,len);  // 错误,要保存地址
  1. 如果 openO_RDONLYmmapprot 参数指定PROT_READ | PROT_WRITE 会怎么样?
    产生错误,返回 MAP_FAILED
    open() 函数中的权限建议和 prot 参数的权限保持一致。

  2. 如果文件偏移量为 1000 会怎么样?
    会错误,偏移量必须为 页 的整数倍(4k)。

  3. mmap 什么情况下会调用失败?

    • 第一关参数:lenght=0
    • 第三个参数:prot
      • 只指定写权限
      • prot PROT_READ | PROT_WRITE
        第5 个参数 fd,通过open 函数指定 O_RDONLY / O_WRONLY
  4. 可以用 open 的时候 O_CREAT 一个新文件来创建映射区?

    • 可以的,但是创建的文件的大小如果为 0 的话,会报错
    • 可以对新的文件进行扩展,产生黑洞文件
      • lseek()
      • truncate()
  5. mmap 后关闭文件描述符,对 mmao 映射有没有影响?
    没有影响,创建映射区的fd被关闭,没有任何影响。

使用

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include /*** void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);- addr :起始地址,NULL 要内核寻找合适的地址- length :内容长度- prot :权限,需要与文件 fd 的权限相同- PROT_EXEC 页可执行的- PROT_READ 页可读- PROT_WRITE 页可写- PROT_NONE 页不可访问- flags :指定映射对象的类型,映射选项和映射页是否可以共享。- MAP_SHARED 与其它所有映射这个对象的进程共享映射空间。对共享区的写入,相当于输出到文件。直到msync()或者munmap()被调用,文件实际上不会被更新。- MAP_PRIVATE 建立一个写入时拷贝的私有映射。内存区域的写入不会影响到原文件。这个标志和以上标志是互斥的,只能使用其中一个。- fd :映射的磁盘文件- offset :被映射对象内容的起点 以页为单位,32位操作系统中,一页为 4k,即 4096 字节。
*/
int main(){int fd=open("a.txt",O_RDWR);if(fd==-1){printf("create not succ...");}off_t l=lseek(fd,100,SEEK_SET);write(fd," ",1);void* addr=mmap(NULL,l,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0);close(fd);if(addr==MAP_FAILED){perror("mmap");exit(0);}char buf[]="hello world!";memcpy(addr,buf,strlen(buf));int k=munmap(addr,l);return 0;
}

相关内容

热门资讯

鄂尔多斯东胜区:法援惠民 暖城... 鄂尔多斯东胜区 法援惠民 暖城巡游 近日,鄂尔多斯市东胜区“法援惠民·温暖同行”暖城巡游宣传活动正式...
李家超:港元会维持与美元挂勾 ... 智通财经获悉,日前,香港行政长官李家超接受采访时表示,港元会维持与美元挂勾,强调这是香港赖以成功的基...
国防部介绍军事科研奖励条例特点 钛媒体App 6月9日消息,国防部新闻发言人蒋斌大校介绍《军事科研奖励条例》3个特点:一是将战斗力标...
电投能源:公司将严格按照相关法... 证券之星消息,电投能源(002128)06月09日在投资者关系平台上答复投资者关心的问题。 投资者提...
国防部:《军事科研奖励条例》将... 中新网6月9日电 据国防部网站消息,6月9日下午,国防部新闻局副局长、国防部新闻发言人蒋斌大校就近期...
特朗普政策摇摆不定!外媒警告:... 王爷说财经讯:6月9日消息,虽说现在美国劳动市场表面上还算稳定,但特朗普那反复无常的贸易政策,可把商...
剑桥大学首次考虑将“补考”制度... 最新消息,剑桥大学建校 800 多年来首次将 “补考” 制度纳入改革议程,提案即将在下月进入关键投票...
聚焦北大荒|前进农场:建立健全... 前进农场位于青龙山灌区中区,灌区通水达效面积75.47万亩,农业节水潜力巨大。前进农场立足实际,聚焦...
北京朝阳三大举措打造涉外法律服... 6月9日,北京青年报记者从2025北京CBD论坛年会新闻发布会上获悉,2025北京CBD论坛暨首都高...
自然资源部法规司司长魏莉华出任... 据自然资源部网站“部领导”栏目资料,此前担任自然资源部法规司司长的魏莉华已任自然资源部总规划师。 ...