一、共享内存的概述
共享内存是一种最为高效的进程间通信方式。因为进程可以直接读写内存,不需要任何数据的复制。为了在多个进程间交换信息,内核专门留出了一块内存区。这段内存区可以由需要访问的进程将其映射到自己的私有地址空间。因此,进程就可以直接读写这一内存区而不需要进行数据的复制,从而大大提高了效率。其原理基本示意图如下所示:
二、共享内存的一般使用方法和基本原理
1、一般使用方法
共享内存的实现分为两个步骤,第一步是创建共享内存,这里用到的函数是shmget(),也就是从内存中获得一段共享内存区域,第二步映射共享内存,也就是把这段创建的共享内存映射到具体的进程空间中,这里使用的函数是shmat()。到这里,就可以使用这段共享内存了,也就是可以使用不带缓冲的I/O 读写命令对其进行操作。除此之外,当然还有撤销映射的操作,其函数为shmdt()。在共享内存使用完毕之后调用shmctl()函数将创建的共享内存销毁。
2、主要函数
a、创建或者获得一个共享内存
int shmget(key_t key, int size, i