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

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

相关推荐
cfm_29145 小时前
单例模式详解
java
我叫张土豆5 小时前
本体论、DDD、SDD、TDD:AI 编程时代的四层认知栈
java·人工智能
白远山5 小时前
家政服务家政社区派单实战:调度系统架构设计与实现指南
java·开发语言·小程序·架构·需求分析
海南java第二人5 小时前
从诞生到回收:JVM对象生命周期与垃圾回收全链路解析
java
GeW5 小时前
RHCE快速拿证全攻略:考点拆解+实验强化+时间规划,一次通关
linux
SL_staff6 小时前
JVS-Logic:从页面配置工具到企业级业务逻辑中枢的技术演进
java·算法·全栈
见闻小天地6 小时前
从晶片工艺到可靠性验证:晶威特TF-3215型RTC晶振全面解析
运维·业界资讯
DevRay6 小时前
Java 21虚拟线程深度实战:告别线程池焦虑,百万并发吞吐量直接翻倍(原理+代码+避坑)
java·开发语言
forestsea6 小时前
从零构建 Java 智能体 RAG 系统:Milvus 向量数据库实战指南
java·数据库·milvus
lifewange6 小时前
VSCode怎么运行java
java·ide·vscode