关于mmap说明:
使一个磁盘文件与存储空间的一个缓冲区相映射。也就是说读取缓冲区的数据,就相当于读文件中的相应字节。所以同样,将数据存入缓冲区,就把相应的字节自动写入文件(MAP_SHARED标志,而MAP_PRIVATE不影响原文件,只影响文件的副本)。
操作步骤是:首先打开文件,然后从文件的off偏移量处的len长度到指定的缓冲区。
文件长度和缓冲区长度的关系,如果映射区长度不是页长,那么系统会提供页长的映射区。所以你如果操作超过文件的长度,可能不会出错。
mmap返回的是该映射区的起誓地址。(虚拟地址)。
共享存储可以由不相关的进程使用,而相关的进程可以使用/dev/zero的mmap。
创建一个存储区,初试化为0,多个进程的共同祖先使用了MAP_SHARED标志,那这些进程都共享该存储区间。创建了指定长度的存储区以后,需要关掉设备。
同上面的一样,是匿名映射。指定标志为MAP_ANON,文件描述符号是-1。
在相关的进程中,可以使用匿名映射的方式的mmap,当然,有名也可以。
无关的进程,可以使用shm的方式,也可以用mmap同一个文件的方式,好象这样的话,同步和困难。