【项目 进程13】2.28共享内存(1) 2.29共享内存(2)
文章目录
- 2.28共享内存(1)
- 共享内存(效率最高,比内存映射更高。因为内存映射还需一个文件做载体)
- 共享内存使用步骤
- 共享内存操作函数
- 头文件
- 2.29共享内存(2)
- 共享内存相关问题
- 共享内存和内存映射的区别
- 通过共享内存实现进程间通信
- 共享内存操作命令
2.28共享内存(1)
共享内存(效率最高,比内存映射更高。因为内存映射还需一个文件做载体)


IPC:Inter-Process Communication 进程间通信
新的问题:两个进程同时写数据,一个进程读数据,涉及进程同步问题。
共享内存使用步骤
shm:share memory
at:attach (在虚拟内存的用户区 的 共享区 ;内存映射也在这里)
dt:detach
ctl:control
分离和销毁是不同的。
共享内存操作函数

头文件
#include <sys/ipc.h>
#include <sys/shm.h>
- shmget

-
shmat

-
shmdt

shmaddr是虚拟地址空间刚刚绑定的地址。 -
shmctl
第三行 :的进程
IPC_RMID:只是标记共享内存需要被删除。要到没有进程和这块内存绑定了,这块共享内存才会被真的删除
buf:需要的操作cmd不同,buf的作用不同。在标记销毁的时候,buf没有用,所以直接置NULL就可以。
- ftok

如果有很多的key记不过来,可以用这个。名字比身份证号好记
2.29共享内存(2)
共享内存相关问题

共享内存和内存映射的区别

通过共享内存实现进程间通信
共享内存写数据
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <string.h>int main() { // 1.创建一个共享内存int shmid = shmget(100, 4096, IPC_CREAT|0664);printf("shmid : %d\n", shmid);// 2.和当前进程进行关联void * ptr = shmat(shmid, NULL, 0);char * str = "helloworld";// 3.写数据memcpy(ptr, str, strlen(str) + 1);printf("按任意键继续\n");getchar();// 4.解除关联shmdt(ptr);// 5.删除共享内存shmctl(shmid, IPC_RMID, NULL);return 0;
}
共享内存读数据
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <string.h>int main() { // 1.获取一个共享内存int shmid = shmget(100, 0, IPC_CREAT);printf("shmid : %d\n", shmid);// 2.和当前进程进行关联void * ptr = shmat(shmid, NULL, 0);// 3.读数据printf("%s\n", (char *)ptr);printf("按任意键继续\n");getchar();// 4.解除关联shmdt(ptr);// 5.删除共享内存shmctl(shmid, IPC_RMID, NULL);return 0;
}
共享内存操作命令

ipcs -m 用比较多
被标记销毁以后,key被置0,但是因为还有绑定,所以暂时还没被销毁。直到所有绑定都解除,ipcs -m就查不到它了

相关文章:
【项目 进程13】2.28共享内存(1) 2.29共享内存(2)
文章目录 2.28共享内存(1)共享内存(效率最高,比内存映射更高。因为内存映射还需一个文件做载体)共享内存使用步骤共享内存操作函数头文件 2.29共享内存(2)共享内存相关问题共享内存和内存映射的…...
Flask框架-流量控制:flask-limiter的使用
一、flask使用flask-limiter存在版本问题 Flask1.1.4 Flask-Bootstrap3.3.7.1 Flask-Caching1.9.0 Flask-Cors3.0.10 Flask-Limiter1.4 Flask-Migrate2.5.3 Flask-RESTful0.3.8 Flask-Script2.0.6 Flask-SocketIO5.0.1 Flask-Sockets0.2.1 Flask-SQLAlchemy2.4.4 Jinjia22.11.…...
【机器学习】西瓜书习题3.5Python编程实现线性判别分析,并给出西瓜数据集 3.0α上的结果
参考代码 结合自己的理解,添加注释。 代码 导入相关的库 import numpy as np import pandas as pd import matplotlib from matplotlib import pyplot as plt导入数据,进行数据处理和特征工程 得到数据集 D { ( x i , y i ) } i 1 m , y i ∈ { 0 ,…...
Elasticsearch:通过动态修剪实现更快的基数聚合
作者:Adrien Grand Elasticsearch 8.9 通过支持动态修剪(dynamic pruning)引入了基数聚合加速。 这种优化需要满足特定的条件才能生效,但一旦实现,通常会产生惊人的结果。 我们观察到,通过此更改࿰…...
Webpack5 生产模式压缩图片ImageMinimizerPlugin
文章目录 一、 ImageMinimizerPlugin是什么?二、已经有了asset,为什么需要ImageMinimizerPlugin?三、怎么使用ImageMinimizerPlugin?四、ImageMinimizerPlugin压缩的成果 一、 ImageMinimizerPlugin是什么? 它的实际依…...
时序预测 | Matlab实现基于BP神经网络的电力负荷预测模型
文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 时序预测 | Matlab实现基于BP神经网络的电力负荷预测模型 BP神经网络是一种多层的前馈神经网络,其主要的特点是:信号是前向传播的,而误差是反向传播的。B...
基于回溯算法实现八皇后问题
八皇后问题是一个经典的计算机科学问题,它的目标是将8个皇后放置在一个大小为88的棋盘上,使得每个皇后都不会攻击到其他的皇后。皇后可以攻击同一行、同一列和同一对角线上的棋子。 一、八皇后问题介绍 八皇后问题最早由国际西洋棋大师马克斯贝瑟尔在18…...
Linux【网络编程】之深入理解TCP协议
Linux【网络编程】之深入理解TCP协议 TCP协议TCP协议段格式4位首部长度---TCP报头长度信息 TCP可靠性(确认应答)&& 提高传输效率确认应答(ACK)机制32位序号与32为确认序号 16位窗口大小---自己接收缓冲区剩余空间的大小16位紧急指针---紧急数据处…...
如何克服看到别人优于自己而感到的焦虑和迷茫?
文章目录 每日一句正能量前言简述自己的感受怎么做如何调整自己的心态后记 每日一句正能量 行动是至于恐惧的良药,而犹豫、拖延,将不断滋养恐惧。 前言 虽然清楚知识需要靠时间沉淀,但在看到自己做不出来的题别人会做,自己写不出的…...
浅谈React中的ref和useRef
目录 什么是useRef? 使用 ref 访问 DOM 元素 Ref和useRef之间的区别 Ref和useRef的使用案例 善用工具 结论 在各种 JavaScript 库和框架中,React 因其开发人员友好性和支持性而得到认可。 大多数开发人员发现 React 非常舒适且可扩展,…...
Linux C 获取主机网卡名及 IP 的几种方法
在进行 Linux 网络编程时,经常会需要获取本机 IP 地址,除了常规的读取配置文件外,本文罗列几种个人所知的编程常用方法,仅供参考,如有错误请指出。 方法一:使用 ioctl() 获取本地 IP 地址 Linux 下可以使用…...
解密外接显卡:笔记本能否接外置显卡?如何连接外接显卡?
伴随着电脑游戏和图形处理的需求不断增加,很多笔记本电脑使用者开始考虑是否能够通过外接显卡来提升性能。然而,外接显卡对于笔记本电脑是否可行,以及如何连接外接显卡,对于很多人来说仍然是一个迷。本文将为您揭秘外接显卡的奥秘…...
list与erase()
运行代码: //list与erase() #include"std_lib_facilities.h" //声明Item类 struct Item {string name;int iid;double value;Item():name(" "),iid(0),value(0.0){}Item(string ss,int ii,double vv):name(ss),iid(ii),value(vv){}friend istr…...
Arcgis 分区统计majority参数统计问题
利用Arcgis 进行分区统计时,需要统计不同矢量区域中栅格数据的众数(majority),出现无法统计majority参数问题解决 解决:利用copy raster工具,将原始栅格数据 64bit转为16bit...
vue2+wangEditor5富文本编辑器(图片视频自定义上传七牛云/服务器)
1、安装使用 安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save在main.js中引入样式 import wangeditor/editor/dist/css/style.css在使用编辑器的页…...
shell脚本练习--安全封堵脚本,使用firewalld实现
一.什么是安全封堵 安全封堵(security hardening)是指采取一系列措施来增强系统的安全性,防止潜在的攻击和漏洞利用。以下是一些常见的安全封堵措施: 更新和修补系统:定期更新操作系统和软件包以获取最新的安全补丁和修…...
双端冒泡排序
双端冒泡排序是对传统冒泡排序的改进,其主要改进在于同时从两端开始排序,相对于传统冒泡排序每次只从一端开始排序,这样可以减少排序的遍历次数。 传统冒泡排序从一端开始,每次将最大(或最小)的元素冒泡到…...
如何在Visual Studio Code中用Mocha对TypeScript进行测试
目录 使用TypeScript编写测试用例 在Visual Studio Code中使用调试器在线调试代码 首先,本文不是一篇介绍有关TypeScript、JavaScript或其它编程语言数据结构和算法的文章。如果你正在准备一场面试,或者学习某一个课程,互联网上可以找到许多…...
GO中Json的解析
一个json字串,想要拿到其中的数据,就需要解析出来 一、适用于json数据的结构已知的情况下 使用json.Unmarshal将json数据解析到结构体中 根据json字串数据的格式定义struct,用来保存解码后的值。这里首先定义了一个与要解析的数据结构一样的…...
chatgpt 提示词-关于数据科学的 75个词语
这里有 75 个 chatgpt 提示,可以立即将其用于数据科学或数据分析等。 1. 伪装成一个SQL终端 提示:假设您是示例数据库前的 SQL 终端。该数据库包含名为“用户”、“项目”、“订单”、“评级”的表。我将输入查询,您将用终端显示的内容进行…...
零成本掌握专业音频编辑:Audacity免费音频处理终极指南
零成本掌握专业音频编辑:Audacity免费音频处理终极指南 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 在数字内容创作蓬勃发展的今天,高质量的音频处理已成为专业创作的标配。然而&#x…...
Kettle实战避坑指南:从部署到调优的20个关键场景解析
1. 环境部署避坑指南 第一次在Linux上部署Kettle时,我踩了不少坑。记得当时花了两天时间才让一个简单的数据转换任务跑起来,现在回想起来都是血泪史。这里分享几个关键场景的解决方案,帮你少走弯路。 1.1 Windows到Linux的迁移陷阱 很多人习惯…...
【实践】Arduino舵机驱动全解析:从基础PWM到高级驱动板应用
1. 舵机控制基础:PWM信号与接线原理 第一次接触舵机时,我被那三根颜色各异的线缆搞得一头雾水。后来才发现,舵机接线其实比想象中简单得多——红线接5V电源,黑线或棕线接地(GND),而最关键的那根…...
不只是网格:聊聊Ansys Fluent外气动仿真中,那些比画网格更重要的设置(以可压缩流为例)
超越网格划分:Ansys Fluent外气动仿真中的高阶设置精要 当气流以0.7马赫掠过机翼表面时,大多数工程师的第一反应是检查网格质量。但真正影响仿真精度的,往往是那些隐藏在软件深处、鲜少被深入讨论的参数设置。本文将带您穿透操作界面…...
逆向思维:不写爬虫,用FFmpeg一键下载微信小程序里的M3U8视频流
逆向思维:用FFmpeg高效下载微信小程序M3U8视频流 每次遇到需要保存微信小程序里的视频时,大多数开发者第一反应就是写爬虫——抓包分析、下载TS片段、合并文件,一套流程下来至少得折腾半小时。但今天我要分享一个更聪明的解决方案:…...
MATLAB神经网络拟合工具箱实战:从数据导入到模型部署的完整指南
1. 数据准备与导入 用MATLAB做神经网络回归的第一步,就是把数据整理好塞进工作区。我见过太多新手在这第一步就栽跟头——要么数据格式不对,要么变量没对齐,结果后面步步出错。这里分享几个我踩过坑才总结出来的经验。 首先说数据格式。虽然工…...
终极免费实时屏幕翻译工具:如何三分钟打破语言壁垒
终极免费实时屏幕翻译工具:如何三分钟打破语言壁垒 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否曾经…...
FPGA开发实战:从Modelsim到Vivado的典型编译报错排查指南
1. FPGA开发中的编译报错:从入门到精通 刚接触FPGA开发的朋友们,相信你们一定被各种编译报错折磨过吧?我刚开始用Modelsim和Vivado的时候,经常被一堆莫名其妙的错误代码搞得一头雾水。今天我就来分享一些实战经验,帮你…...
Rockchip RK3588 硬件看门狗从内核到应用的完整配置与调试
1. 硬件看门狗基础与RK3588特性 硬件看门狗(Watchdog)是嵌入式系统的"救命稻草",它就像个严格的计时员,如果系统在规定时间内没有定期"签到"(喂狗),就会强制重启整个系统。…...
零基础实战:用Clawdbot将Qwen3-VL:30B接入飞书,打造企业智能助手
零基础实战:用Clawdbot将Qwen3-VL:30B接入飞书,打造企业智能助手 1. 准备工作与环境确认 1.1 硬件环境检查 在开始前,请确保您的星图AI云实例满足以下最低配置要求: 组件最低要求推荐配置GPU显存24GB48GBCPU核心数8核20核系统…...
