共享内存
⭐:最快的 IPC 方式
1. 核心特点
-
直接将物理内存映射到多个进程的虚拟地址空间
-
无需数据拷贝,速度最快
-
需配合信号量实现同步互斥
-
生命周期随内核,不随进程消失
2. 头文件
#include <sys/shm.h>
3. 核心 API(⭐)
-
shmget:创建 / 获取共享内存
int shmid = shmget(key_t key, size_t size, int shmflg);-
key:唯一键值(如 1234)
-
size:共享内存大小
-
flag:
IPC_CREAT | 0600(存在则获取,不存在则创建)
-
-
shmat:挂载(映射到进程地址空间)
char *p = shmat(shmid, NULL, 0); -
shmdt:卸载(断开映射)
shmdt(p); -
shmctl:控制(删除共享内存)
shmctl(shmid, IPC_RMID, NULL);
4. 查看 / 删除命令
-
ipcs:查看共享内存、消息队列、信号量 -
ipcrm -m shmid:删除共享内存
5. 基本流程
创建 → 映射 → 读写 → 断开映射 → 删除