大家好,今天这篇文章带你讲解下稍显神秘的mmap到底是怎么一回事。
简单的与麻烦的
用代码读写内存对程序员来说是非常方便非常自然的,但用代码读写磁盘对程序员来说就不那么方便不那么自然了。
回想一下,你在代码中读写内存有多简单:
定义一个数组:
int a[100];
a[0] = 2;
看到了吧,这时你就在写内存,甚至你可能在写这段代码时下意识里都没有去想读内存这件事。
再想想你是怎样读磁盘文件的?
char buf[1024];
int fd = open("/filepath/abc.txt");
read(fd, buf, 1024);
// 操作buf等等
看到了吧,读写磁盘文件其实是一件很麻烦的事情,你需要open一个文件,意思是告诉操作系统“Hey,操作系统,我要开始读abc.txt这个文件了,把这个文件的所有信息准备好,然后给我一个代号”。这个代号就是所谓的文件描述符,拿到文件描述