共享内存呀

发布时间:2026/10/30 10:51:22

共享内存呀 共享内存Shared Memory是IPC 进程间通信方式之一原理在内核开辟一块物理内存多个进程将这块内存映射到自己的虚拟地址空间直接读写内存无需内核拷贝数据速度最快但没有自带同步互斥一般要搭配信号量、互斥锁使用。完整函数链路ftok()→shmget()→shmat()→ 读写内存 →shmdt()→shmctl()1. ftok —— 生成 IPC 键值 key_t#include sys/types.h #include sys/ipc.hkey_t ftok(const char *pathname, int proj_id);参数说明pathname存在的文件路径必须真实存在一般用当前目录.proj_id项目 ID0~255 之间的整数常用字母如a返回值成功返回key_t类型键值用于 shmget、msgget、semget失败-1设置 errno原理ftok 根据 文件设备号、文件 inode、proj_id 组合算出唯一 key ⚠️ 注意文件删除重建后inode 变化ftok 结果会变。注意用ipcs查看2. shmget —— 创建 / 获取共享内存段建立key和stimid的关系#include sys/ipc.h #include sys/shm.hint shmget(key_t key, size_t size, int shmflg);参数keyftok 得到的键值特殊值IPC_PRIVATE代表私有共享内存只用于亲缘进程size共享内存大小建议 4k 对齐内存页大小shmflg权限 创建标志IPC_CREAT不存在则创建存在直接获取IPC_EXCL搭配 IPC_CREAT存在则报错权限位0666类似文件权限一般就是IPC_CREAT|0666返回值成功shmid 共享内存标识符int后续操作都用它失败-13. shmat —— 挂载映射共享内存到进程虚拟地址(建立映射--获得地址)attach把内核共享内存映射到当前进程地址空间得到可用指针。void *shmat(int shmid, const void *shmaddr, int shmflg);参数shmid要映射的本地内存shmaddr本地可用地址 一般不确定--》NULLshmflg挂载属性0可读可写SHM_RDONLY只读挂载返回值成功返回映射后的起始虚拟地址指针void*强制转换使用失败(void *)-14. shmdt —— 脱离共享内存解除映射detach进程用完共享内存断开映射不会删除内核中的共享内存段int shmdt(const void *shmaddr);参数shmaddrshmat 返回的映射起始地址返回值成功返回 0失败 -1eg:ifshmdt(p)05. shmctl —— 共享内存控制获取信息、删除、设置属性control多功能控制函数最常用IPC_RMID 删除共享内存int shmctl(int shmid, int cmd, struct shmid_ds *buf);参数shmid共享内存 idcmd控制命令重点三个IPC_RMID标记删除共享内存只有所有进程都 shmdt 脱离后内核才真正释放此时 buf 传 NULLIPC_STAT获取共享内存属性存入 bufIPC_SET修改共享内存权限等属性一般就用IPC_RMID3、bufshmid_ds 结构体指针IPC_RMID 填 NULL返回值成功 0失败 - 1eg:if(shmctl(shmid,IPC_RMID,NULL)0)总结:共享内存a.key -- ftokb.shmid -- shmgetc.映射 -- shmatd.解除 -- shmdte.销毁 -- shmctl
延伸阅读

更多相关文章

2026/10/30 10:49:33

Nacos + Spring Cloud:服务注册与配置中心

不同版本不要随意混搭,项目已有 Spring Boot 版本时,应先查阅 Spring Cloud Alibaba 的版本对应表。示例版本如下: 组件版本Spring Boot4.0.0Spring Cloud2025.1.0Spring Cloud Alibaba2025.1.0.0Nacos Server3.2.3JDK17 及以上 一、启动 N…

2026/10/27 4:01:36

Wheeltec智能车ROS实战(二):Gazebo仿真环境适配与键盘控制

1. 引言 在上一篇文章中,我们完成了Wheeltec智能车ROS开发环境的搭建——从VMware虚拟机安装Ubuntu 18.04,到ROS Melodic的部署,再到Wheeltec官方工作空间的移植与编译。环境跑通了,接下来就是让小车真正“动”起来。 还没看第一…

2026/10/27 22:27:44

OWASP 2021 A02 失效的身份认证

一、A02 失效的身份认证(身份认证失效)在OWASP 2017版本中身份认证失效为独立高危Top漏洞,2021版本保留为独立A02高危漏洞。核心原因是:系统登录鉴权、会话管理、账号校验体系存在缺陷,导致攻击者可非法攻破登录防线、…

2026/10/30 10:48:21

2022年嵌入式开发风向标:七大技术热词与趋势解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 10:48:21

效率工具软件选型与自动化实战:从任务管理到跨应用连接

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 10:48:21

RV1103边缘图像分类模型部署实战:量化精度与性能对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 10:48:21

AI生成嵌入式驱动代码的致命盲区与刷砖救砖实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 10:48:21

STM32F103串口DMA加空闲中断:高效不定长数据收发实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 10:43:20

BLUE源码XE10编译实战:环境配置、数据库连接与高频坑

简介:BLUE源码XE10是一套基于Embarcadero Delphi XE10的源代码集合,主要面向希望在Object Pascal、跨平台开发与软件工程方向进阶的开发者。压缩包约358.54MB,文件数量与类型暂未标注,但通常源码会涉及窗体单元、业务逻辑模块、调…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/30 0:00:46

NCP1342高频准谐振反激控制器:从设计约束到验收的完整方案

简介:NCP1342 高频准谐振反激控制器应用介绍译文文档,面向电源设计工程师、硬件研发人员及开关电源学习者,帮助读者跨越英文原版资料的语言门槛,系统理解这款高集成度 QR Flyback 控制器的设计要点。文档围绕芯片核心特性展开&…

2026/10/30 0:00:46

NCP1342准谐振反激电源设计:从选型到验收的全流程解析

简介:这份文档面向电源设计工程师与开关电源学习者,系统梳理NCP1342高频准谐振反激控制器的应用要点,帮助读者快速理解这款高集成度离线电源变换器控制芯片的工作机制与设计方法。内容涵盖芯片核心特性、引脚功能定义、电气特性参数表、最大额…

2026/10/30 0:00:46

Web系统自动登出机制设计与实现全解析

1. 系统自动登出机制的设计初衷在各类Web应用和后台管理系统中,自动登出功能早已成为标配。这个看似简单的功能背后,实际上涉及用户安全、资源管理和体验优化的多重考量。作为从业十多年的老开发,我见过太多因为登出逻辑设计不当导致的安全事…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑