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

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

相关推荐
桌面运维家23 分钟前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang1338308907529 分钟前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻1 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
wangchunyu1141 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck2 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir2 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人2 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2601_949847753 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_639906943 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
2501_944521593 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github