一、共享内存
共享内存是IPC提供的另一种进程间通信机制。共享内存是通过将内核分配的共享存储区映射到进程的地址空间实现的。它允许两个或者多个进程共享一个给定的存储区。由于数据不需要在客户进程和服务器进程之间复制,所以这是最快的一种IPC.
两个进程通过共享内存通信是指:同一块物理内存被映射到多个进程各自的进程空间,各个进程都可以对共享内存中的数据进行更新。
二、共享内存的映射
共享内存创建以后,用户程序在运行时,通过调用IPC接口函数将该存储区映射至应用程序的内存地址空间。成功映射后对共享内存的读写就像读写进程的比变量一样快捷。映射后的进程地址空间如图所示:
进行共享内存映射时,可以映射到任意的数据结构。例如可以映射到程序中的一个普通的字符数组,也可以映射到程序自定义的一个数据结构。
三、共享内存的使用
1 、共享内存的创建:要使用共享内存,首先应该创建共享内存。在linux系统下,由函数shmget实现
#include<sys/shm.h>
函数原型: int shmget( key_t key, size_t size, int flag);//返回值:成功 共享内存ID,出错,-1