mmap函数建立文件的内存映射后,删除文件,能正常读取内容吗?
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就好了.


