Linux -- 共享内存

共享内存

⭐:最快的 IPC 方式

1. 核心特点

  • 直接将物理内存映射到多个进程的虚拟地址空间

  • 无需数据拷贝,速度最快

  • 需配合信号量实现同步互斥

  • 生命周期随内核,不随进程消失

2. 头文件

复制代码
#include <sys/shm.h>

3. 核心 API(⭐)

  1. shmget:创建 / 获取共享内存

    复制代码
    int shmid = shmget(key_t key, size_t size, int shmflg);
    • key:唯一键值(如 1234)

    • size:共享内存大小

    • flag:IPC_CREAT | 0600(存在则获取,不存在则创建)

  2. shmat:挂载(映射到进程地址空间)

    复制代码
    char *p = shmat(shmid, NULL, 0);
  3. shmdt:卸载(断开映射)

    复制代码
    shmdt(p);
  4. shmctl:控制(删除共享内存)

    复制代码
    shmctl(shmid, IPC_RMID, NULL);

4. 查看 / 删除命令

  • ipcs:查看共享内存、消息队列、信号量

  • ipcrm -m shmid:删除共享内存

5. 基本流程

创建 → 映射 → 读写 → 断开映射 → 删除

相关推荐
Sinclair几秒前
安企CMS的安装-安装引导与初始化
运维·后端
Sinclair4 分钟前
安企CMS的安装-源码编译安装
运维·后端·go
Sinclair6 分钟前
安企CMS的安装-同一服务器多站点部署
运维·后端
Sinclair7 分钟前
安企CMS的安装-Docker 部署
运维·docker·容器
plainGeekDev11 分钟前
kapt 替换为 KSP
android·java·kotlin
Sinclair17 分钟前
安企CMS的安装-服务器手动部署
运维·后端
蜡台20 分钟前
通过Gradle脚本声明更改Java变量
android·java·开发语言·python·kotlin·gradle·groovy
shujudang27 分钟前
业务闭环视角下的营销自动化(MA)平台选型逻辑
大数据·运维·数据分析·自动化·营销自动化
程序员天天困1 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·后端
要开心吖ZSH1 小时前
AI医疗分诊与健康咨询助手agent开发——(4-2)从零到一:我给AI医疗分诊助手加了个“知识库大脑“,终于搞懂了RAG是什么
java·docker·agent·医疗·rag