当前位置: 首页 > news >正文

Linux 共享内存

#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);功能:创建一个新的内存段或者获得一个既有的共享内存段的标识。新创建的内存段中的数据都会被初始化为0参数:-key:key_t类型是一个整型,通过这个创建或者找到一个共享内存一般使用16进制表示 非0-size:共享内存的大小-shmflg:属性-访问权限-附加属性:创建/判断共享内存段是否存在-创建:IPC_CREAT-判断共享内存是否存在:IPC_EXCL,需要和IPC_CREAT一起使用返回值:失败-1成功 共享内存的引用IDvoid *shmat(int shmid, const void *shmaddr, int shmflg);功能:和当前的进程关联参数: -shmid:共享内存的标识(ID),由shmget返回值获取-shmaddr:申请的共享内存的起始地址,指定NULL,内核指定-shmflg:对共享内存的操作-SHM_RDONLY  必须要有读权限-读写:0返回值:失败 (void *) -1 成功返回共享内存的首地址int shmdt(const void *shmaddr)功能:解除当前进程和共享内存的关联参数:共享内存的首地址返回值:失败-1 成功0int shmctl(int shmid, int cmd, struct shmid_ds *buf);功能:对共享内存进行操作,共享内存要删除才会消失,创建共享内存的进程被销毁了对共享内存毫无影响参数:-shmid:共享内存的ID-cmd:要做的操作-IPC_STAT:获取共享内存的当前状态-IPC_SET:设置共享内存的状态-IPC_RMID:标记共享内存被销毁-buf:要设置或者获取的属性key_t ftok(const char* pathname, int proj_id);功能:根据指定的路径名和int值,生成一个共享内存的key参数:-pathname 指定一个存在的路径-proj_id:int类型的值,但是系统调用只会使用其中的一个字节范围0-255,一般指定一个字符'a'

可以对共享内存进行多次删除 shmctl

因为shmctl是标记删除而不是直接删除,当共享内存关联的进程数为0时,真正意义上的删除

共享内存的key为0的时候,表示被标记删除

一个进程与共享内存取消关联,这个进程就不能再继续操作共享内存,也不能再次关联

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

1.共享内存可以直接创建,内存映射需要磁盘文件(匿名映射除外)

2.共享内存效果更好

3内存:

        所有的进程操作的是同一块共享内存

        内存映射,每个进程在自己的虚拟地址空间中有一个独立的存在

4.数据安全:

        -进程突然退出

                共享内存还存在

                内存映射区消失

        -电脑死机

                数据存在共享内存中,没有了

               内存映射区的数据,有天域磁盘文件中数据还在,所以内存映射区的数据还在

5.生命周期:

        内存映射区:进程退出,内存映射区销毁

        共享内存:进程退出,共享内存还在,手动删除(所有的关联的进程数为0)或者关机

                如果一个内存退出,会自动和共享内存取消关联

相关文章:

Linux 共享内存

#include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, size_t size, int shmflg);功能&#xff1a;创建一个新的内存段或者获得一个既有的共享内存段的标识。新创建的内存段中的数据都会被初始化为0参数&#xff1a;-key&#xff1a;key_t类型是一个整…...

druid在springboot中如何整合配置!

在Spring Boot中配置Druid作为数据源非常简单。Druid是一个高性能的数据库连接池&#xff0c;它提供了丰富的监控和统计功能&#xff0c;适用于各种数据库。以下是在Spring Boot中配置Druid数据源的步骤&#xff1a; 1. 添加Druid依赖&#xff1a; 首先&#xff0c;您需要在项…...

数据结构:栈

文章目录 栈一&#xff0c;概述二&#xff0c;添加数据三&#xff0c;删除数据 栈 一&#xff0c;概述 栈&#xff08;Stack&#xff09;是一种特殊的线性表&#xff0c;它只允许在一端进行插入和删除操作&#xff0c;通常被称为“后进先出”&#xff08;Last In First Out&a…...

每日刷题-6

目录 一、选择题 二、算法题 1.Fibonacci数列 2.合法括号序列判断 一、选择题 1、 解析&#xff1a;内联函数是一种可以提高函数执行效率的方法&#xff0c;它的原理是编译时在函数调用点直接展开函数体的代码&#xff0c;从而避免了函数调用的开销。 但是&#xff0c;内联函…...

systrace使用注意事项

打开systrace文件报错&#xff1a;Unable to select a master clock domain because no path can be found from “SYSTRACE” to “LINUX_FTRACE_GLOBAL”. 使用systrace生成的trace.html文件无法打开&#xff0c;或者报上面的错误&#xff0c;可以选择下面这个方式&#xff1…...

RockyLinux9.2 网卡配置和nmcli、nmtui命令的使用

NetworkManager NetworkManager 是一个标准的Linux网络配置工具套件&#xff0c;支持服务器&#xff0c;也支持桌面环境&#xff0c; 发展到如今&#xff0c;绝大多数流行的发行版都支持它。 这套网络配置工具适用于 Rocky Linux 8 及更高版本。 nmcli是nm的命令行工具、nmt…...

Java线程池ThreadPoolExecutor应用(Spring Boot微服务)

记录&#xff1a;475 场景&#xff1a;在Spring Boot微服务中使用Java线程池ThreadPoolExecutor。实现Runnable接口提交线程任务到线程池。 版本&#xff1a;JDK 1.8,Spring Boot 2.6.3。 1.使用注解配置线程池ThreadPoolExecutor (1)说明 ThreadPoolExecutor&#xff0c;…...

QT5|C++|通过信号槽机制实现进度条更新

背景&#xff1a;最近在写一个删除90天数据显示进度的功能&#xff0c;实现思路是&#xff1a;通过信号槽捕获当前进度值实现。 备注&#xff1a;点击start按钮&#xff0c;开始更新进度条&#xff0c;直到100&#xff08;每隔1s进行更新&#xff09;举个栗子&#xff1a; 1、…...

什么是智能推荐?智能推荐的原理是什么?

一、智能推荐的魔力 2020年的愚人节晚间&#xff0c;罗永浩在抖音带货&#xff0c;相信你也被刷屏了吧。3小时的直播过程中&#xff0c;22款产品轮番出场&#xff0c;最终首播支付交易总额突破1.1亿、整场直播观看总人数超过4800万、总销售件数逾91万&#xff0c;粉丝打赏音浪…...

Windows下的Elasticsearch-head安装

Windows下的Elasticsearch-head安装 参考&#xff1a;https://gitcode.net/mirrors/mobz/elasticsearch-head 需要用到 npm 命令&#xff0c;这里可以提前下载安装下Node.js 即可自动安装npm&#xff1b; Node.js 下载安装地址&#xff1a;https://nodejs.org/en/download # 进…...

两台服务器间进行文件传输

目录 方法1&#xff1a;使用SCP 方法2&#xff1a;使用rsync 使用SSH密钥 两台服务器之间进行文件传输通常可以使用SCP&#xff08;Secure Copy Protocol&#xff09;或rsync命令。这两种方法都是在UNIX和Linux系统上常用的工具&#xff0c;用于安全地复制文件和目录。以下是…...

研究生选控制嵌入式还是机器视觉好?

研究生选控制嵌入式还是机器视觉好&#xff1f; 我是嵌入式/硬件方向转的算法&#xff0c;现在是公司的算法负责人&#xff0c;如果再让我选一次&#xff0c;我是不会再选嵌入式方 向&#xff0c;嵌入式如果只做技术是没前途的。 你要是有一定自学能力&#xff0c;能自己在学校…...

SecureCRT SSH与FTP连接中文乱码

1、首先要保证服务端环境变量是UTF-8编码的 LANG”zh_CN.UTF-8″ 2、会话里面配置好字符编码&#xff1a;UTF-8 SSH会话的窗口就可以正常显示中文了&#xff0c;效果如下 3、打开FTP或者SFTP时进行文件传输时&#xff0c;列表窗口里面还是乱码&#xff0c;需要把SecureCRT安…...

OSI七层网络参考模型与数据流通过程

OSI七层网络参考模型 文章目录 OSI七层网络参考模型1. OSI参考模型初步了解2. OSI参考模型理解3. 数据流通的过程 1. OSI参考模型初步了解 OSI&#xff0c;英文为Open System Interconnect&#xff0c;意为开放式系统互连&#xff0c;国际化标准组织(ISO)指定了OSI模型&#x…...

数字孪生行业相关政策梳理--工业领域相关政策(可下载)

自2021年国家“十四五”规划纲要提出“探索建设数字孪生城市”以来&#xff0c;国家发展和改革委员会、工业和信息化部、住房和城乡建设部、水利部、农业农村部等部门纷纷出台政策&#xff0c;大力推动数字孪生在千行百业的落地发展。这些政策不仅为数字孪生的应用提供了广阔的…...

【工具】咸鱼之王辅助小助手来了!

自动答题的视频演示&#xff1a;【工具】咸鱼之王辅助小助手来了!_哔哩哔哩_bilibili 刚开始搞&#xff0c;还没来得及做界面&#xff0c;目前只做了自动答题。 欢迎感兴趣的大佬一起来开发~...

黑马JVM总结(十)

&#xff08;1&#xff09;直接内存_基本使用 下面我们看一下使用了ByteBuffer直接内存&#xff0c;大文件的读写效率是非常的高 Java本身并不具备磁盘读写的能力&#xff0c;它需要调用操作系统的函数&#xff0c;需要从java的方法内部调用本地方法操作系统的方法&#xff0c…...

JPEG、GIF动图可以转换成SVG、Eps格式的矢量图吗?

在进行图片设计的过程中&#xff0c;我们可能需要很多不同格式的图片&#xff0c;例如 JPG、PNG、BMP 和 GIF 位图图像&#xff0c;怎么将这些图片转换成矢量图呢&#xff1f;一款功能强大的应用程序&#xff0c;能够轻松将位图图片转换成矢量图输出。Vector Magic会帮你进行自…...

数据结构与算法的力量:编写更高效的代码

文章目录 为什么数据结构和算法重要&#xff1f;1. 提高性能2. 节省资源3. 解决复杂问题4. 改进代码质量 常见数据结构和算法数据结构1. 数组&#xff08;Array&#xff09;2. 链表&#xff08;Linked List&#xff09;3. 栈&#xff08;Stack&#xff09;4. 队列&#xff08;Q…...

Python批量统计pdf中“中文”字符的个数

之前的文章提供了批量识别pdf中英文的方法,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文上。以及自动pdf英文转中文文档,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文下。以及Python统计pdf中英文单词的个数。    本文实现Python统计pdf中中文字符的…...

ctf show web 入门43

打开靶场代码逻辑如下&#xff1a; if(!preg_match(“/\ |/|cat/i”, $c)) 它过滤了三个关键内容&#xff1a; \ (空格)&#xff1a;你不能直接在命令中使用空格&#xff08;例如 ls -l 或 cat flag 都会失败&#xff09;。 / (正斜杠)&#xff1a;你不能使用路径符号&#xf…...

Human Skill Tree:基于认知科学的AI学习操作系统,重塑AI时代学习方式

1. 项目概述最近在折腾AI工具的时候&#xff0c;我一直在想一个问题&#xff1a;AI现在能通过Skill和MCP&#xff08;模型上下文协议&#xff09;调用各种工具&#xff0c;几乎无所不能&#xff0c;但我们人类的学习方式却还停留在“问一句&#xff0c;答一句”的原始阶段。这就…...

Gemini Deep Research调用失败?5类报错代码详解+官方未公开的API绕过方案(限时技术内参)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini Deep Research功能怎么用 Gemini Deep Research 是 Google 推出的面向专业研究者的增强型推理能力模块&#xff0c;专为长上下文分析、跨文档信息整合与假设验证设计。启用该功能需通过 Gemini …...

Dell G15终极散热控制指南:开源温度管理软件全面解析

Dell G15终极散热控制指南&#xff1a;开源温度管理软件全面解析 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 还在为Dell G15笔记本过热问题而烦恼吗&#…...

DDSP与神经音频合成:AI如何复刻经典合成器音色

1. 项目概述&#xff1a;当AI遇见经典合成器如果你和我一样&#xff0c;是个对复古合成器声音着迷&#xff0c;同时又对现代AI技术充满好奇的音乐制作人或开发者&#xff0c;那么最近在GitHub上出现的martinic/DrMixAISynth项目&#xff0c;绝对值得你花上一个下午的时间好好研…...

FPGA开发实战:从问题定位到系统化解决,构建硬件设计核心能力

1. 项目概述&#xff1a;当FPGA问题来袭&#xff0c;你的第一反应是什么&#xff1f;如果你正在设计一个嵌入式系统&#xff0c;或者在调试一块数字电路板时&#xff0c;遇到了一个用微控制器&#xff08;MCU&#xff09;难以解决的时序、并行处理或接口协议问题&#xff0c;你…...

a16n:实现AI编程助手配置可移植性的插件化转换工具

1. 项目概述&#xff1a;AI编程助手配置的“翻译官”如果你和我一样&#xff0c;同时在使用 Cursor 和 Claude Code 这类 AI 编程工具&#xff0c;那你一定遇到过这个痛点&#xff1a;好不容易在 Cursor 里调教好了一套完美的.cursorrules文件&#xff0c;定义了代码风格、项目…...

自研引擎筑底 实景孪生领航——核心算法全栈自主可控,构筑数字孪生产业稳健技术护城河

自研引擎筑底 实景孪生领航——核心算法全栈自主可控&#xff0c;构筑数字孪生产业稳健技术护城河副标题&#xff1a;核心算法全栈自主可控&#xff0c;构筑数字孪生产业稳健技术护城河前言数字孪生与视频孪生作为数字经济核心支撑技术&#xff0c;正推动千行百业数字化转型进入…...

Vite+React+TypeScript构建个人作品集网站:从技术选型到GitHub Pages自动化部署

1. 项目概述&#xff1a;一个现代开发者如何构建自己的技术名片最近刚把自己的个人作品集网站重构上线&#xff0c;地址是https://yucco-k.github.io。这不仅仅是一个展示作品的静态页面&#xff0c;更是一个我用来实践和整合现代前端技术栈的“游乐场”。对于开发者而言&#…...

保姆级教程:在Google Colab上用TensorFlow 2.0快速搭建你的第一个ACGAN图像生成器

零门槛实战&#xff1a;用ColabTensorFlow打造你的首个ACGAN数字生成器 想象一下&#xff0c;只需点击几次就能让AI学会生成逼真的手写数字——这不再是实验室里的黑科技。我们将利用Google Colab的免费GPU资源&#xff0c;带你用TensorFlow 2.0快速搭建一个能按需求生成特定数…...