mmap函数建立文件的内存映射后,删除文件,能正常读取内容吗?

cxz7531 cxz7531 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
运行的结果是,能正常读写,但不清楚为什么!有两种可能:
1 内存映射对应一块硬盘空间,文件删除后,内容还在,所以能读取。但如果别的进程把这块空间占了,就危险了。
这样,总归有出错的可能性。
2 内存映射对应一块硬盘空间,只要映射不解除,即使文件删除,硬盘上的那块空间还处于保护状态,这样算是安全的。

比如
void* addr = mmap(NULL, size, PROT_READ, MAP_SHARED, fildes, 0);
指针addr 没有释放之前,原来硬盘上的那块区域能被别的进程写入吗?纠结中。
...全文

相关推荐

mmap打开工具快速安装

需要打开脑图mmap的可以下载这个马上就能安装好

技术老鸟

trivial-mmap:一个提供易于使用的 API 来处理内存映射文件的库

平凡的MMAP Trivial-MMAP 是一个 Common Lisp 库,旨在提供一个高级的、易于使用的 API 来处理内存映射文件。 该库导出以下符号: mmap-file一个将文件映射到内存并返回一个包含指向内存映射文件的指针以及其他元数据的对象的函数; munmap-file从内存中删除内存映射munmap-file的函数; mmap-read-char一个辅助函数,有助于从内存映射文件中读取字符; mmap-read-byte一个辅助函数,用于从内存映射文件中读取一个字节; with-mmap-file一个帮助宏,可确保在我们完成内存映射文件后安全地取消映射(使用munmap-file函数)。 另外,下面是处理mmap-file函数返回的内存映射文件对象的谓词和访问器函数的导出符号: mmapped-file-p一个谓词函数,如果变量是内存映射文件对象则返回真

缪建明

JavaScript学习《mmap文件》

JavaScript学习《mmap文件》 JavaScript学习JavaScript学习《mmap文件》 JavaScript学习JavaScript学习《mmap文件》 JavaScript学习

学海程序

Linux下的内存映射

Linux下的内存映射实现方式,mmap和unmmap介绍

侯奇

mmap共享tree

写这个的出发点是吧之前做的trie能写到文件而且能很容易mmap到内存, 可以用于输入法 搜索引擎分词 词表的功能, 共享前缀存储, 支持最大20亿节点. 简单一点可以当一个hash表使用, 查找的时间复杂度为 N* Log(256) N为字符长度, key可以为二进制的数据, value 必须为int类型, 不能为0, 因为mmtrie_get()/find() 没有结果的情况下为0, 如果需要set value为0的话自己+1, 出来的时候-1就好了.

火锅小呼噜
评论 12
收藏 已收藏
分享
返回顶部
cxz7531
Linux/Unix社区 23,224 成员 74,535 内容