mmap函数建立文件的内存映射后,删除文件,能正常读取内容吗?
运行的结果是,能正常读写,但不清楚为什么!有两种可能:
1 内存映射对应一块硬盘空间,文件删除后,内容还在,所以能读取。但如果别的进程把这块空间占了,就危险了。
这样,总归有出错的可能性。
2 内存映射对应一块硬盘空间,只要映射不解除,即使文件删除,硬盘上的那块空间还处于保护状态,这样算是安全的。
比如
void* addr = mmap(NULL, size, PROT_READ, MAP_SHARED, fildes, 0);
指针addr 没有释放之前,原来硬盘上的那块区域能被别的进程写入吗?纠结中。