1. 相关概念
共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝
为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间
进程就可以直接读写这一内存区而不需要进行数据的拷贝,从而大大提高的效率。
由于多个进程共享一段内存,因此也需要依靠某种同步机制,如互斥锁和信号量等
2. 相关函数
1 -- shmget
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
功能:
创建或者打开一个共享内存
参数:
key:
键值,唯一的键值确定唯一的共享内存id
size:
共享内存的大小
shmflg:
标志位,一般设置为IPC_CREAT | 0777
返回值:
成功:
共享内存id
失败:
-1
2 -- shmctl
#include <sys/ipc.h>
#include <sys/sh