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. 基本流程

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

相关推荐
狼爷13 小时前
吃透 Java Function 接口,搞定 99% 的 Stream 场景
java·函数式编程
祎雪双十Gy18 小时前
从 DataX 的配置加载说起:我用 FastJson2 做了一个轻量级动态配置管理库
java·后端
小锋java123418 小时前
分享一套锋哥原创的SpringBoot4+Vue3宠物领养网站系统
java
考虑考虑21 小时前
Java实现hmacsha1加密算法
java·后端·java ee
掉鱼的猫1 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·spring boot
plainGeekDev1 天前
广播接收器 → Flow + Lifecycle
android·java·kotlin
plainGeekDev1 天前
EventBus → SharedFlow
android·java·kotlin
带刺的坐椅1 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·springboot·web·solon
用户3721574261351 天前
Java 将一个 PPT 文档拆分为多个文件
java
戴为沐1 天前
Linux内存扩容指南
linux