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

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

相关推荐
李日灐2 小时前
<5> Linux 开发工具:包管理 + Vim 实操 + GCC 编译流程 + 静态与动态链接详解
linux·运维·服务器·面试·vim·gcc
t***5442 小时前
如何在 Dev-C++ 中设置 MinGW 和 Clang 的路径
java·前端·c++
我也不曾来过12 小时前
传输层协议UDP和TCP
linux·网络·udp
molihuan2 小时前
最新VMware Ubuntu 1分钟极速安装 植物人教程
linux·ubuntu
拜托啦!狮子2 小时前
安装EnsDb.Hsapiens.v86
java·服务器·前端
aq55356002 小时前
GitSubmodule深度避坑指南
java·开发语言·php
雨声不在2 小时前
家用版本maven的创建方法
java·maven
sdm0704272 小时前
深刻理解进程信号
linux·运维·服务器
Simonhans2 小时前
Linux安装Bun
linux·bun