16LinuxC进程间通信之mmap创建匿名映射区

2023-11-10

1 mmap创建匿名映射区

  • 1)创建匿名映射区非常简单,只需要加上MAP_ANONYMOUS即可,参数len长度可以随便大小,fd没有传-1即可。open这些函数可以不需要了,并且匿名映射实际上就是解决中间创建的文件问题。
  • 2)并且,匿名映射区只能用于有血缘关系的进程,因为没有血缘关系的话,两个进程是没有共同的介质通信。并且之前我们也讲过进程间共享文件描述符和mmap映射区。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/wait.h>

int var = 100;

int main(void)
{
    int *p;
    pid_t pid;
    
    p = (int *)mmap(NULL, 400, PROT_READ|PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);//fd没有传-1即可
    if(p == MAP_FAILED){		//注意:不是p == NULL
        perror("mmap error");
        exit(1);
    }

    pid = fork();				//创建子进程
    if(pid == 0){
        *p = 2000;
        var = 1000;
        printf("child, *p = %d, var = %d\n", *p, var);
    } else {
        sleep(1);
        printf("parent, *p = %d, var = %d\n", *p, var);
        wait(NULL);

        int ret = munmap(p, 40);				//释放映射区
        if (ret == -1) {
            perror("munmap error");
            exit(1);
        }
    }

    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

16LinuxC进程间通信之mmap创建匿名映射区 的相关文章

  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 由于 abi::cxx11 符号导致的链接问题?

    我们最近收到一份报告 因为GCC 5 1 libstdc 和双 ABI http gcc gnu org onlinedocs libstdc manual using dual abi html 它似乎Clang 不知道 GCC 内联名称
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • 隐式声明“gets”

    据我所知 隐式声明 通常意味着该函数必须在调用之前放置在程序的顶部 或者我需要声明原型 然而 gets应该在stdio h文件 我已包含 有没有什么办法解决这一问题 include
  • 如何使用 VSCode 调试 Linux 核心转储?

    我故意从我使用 VSCode 编写的 C 应用程序生成核心转储 我不知道如何调试核心转储 有没有人愿意分享这方面的经验 更新 我相信我现在已经可以使用了 我为核心文件创建了第二个调试配置 我需要添加指向生成的转储文件的 coreDumpPa
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • Linux下单个目录下文件过多会怎样?

    如果一个目录中有大约 1 000 000 个单独的文件 大部分大小为 100k 其中没有其他目录和文件 是否会以任何其他可能的方式降低效率或产生缺点 ARG MAX 会对此提出异议 例如 rm rf 在目录中时 会说 参数太多 想要执行某种
  • Linux 中有没有一种轻量级的方法来获取当前进程数?

    我希望我的 基于 C C 的 程序显示一个数字指示器 指示本地系统上当前有多少个进程 将经常查询正在运行的进程数值 例如每秒一次 以更新我的显示 有没有一种轻量级的方法来获取该数字 显然我可以调用 ps ax wc l 但我不想强迫计算机生
  • 如何在 Ubuntu/Linux 发行版中安装 Tesseract-OCR 3.03?

    我和一个朋友有兴趣为 CV 项目训练 tesseract OCR 引擎 我们尝试使用一些包装器 例如 PyTesser 和 pyocr 但结果目前不如我们需要的那么准确 因此 我们希望尝试训练超立方体以更好地实现我们的目的 即识别食品标签上
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • 每个虚拟主机的错误日志?

    在一台运行 Apache 和 PHP 5 的 Linux 服务器上 我们有多个带有单独日志文件的虚拟主机 我们似乎无法分离 phperror log虚拟主机之间 覆盖此设置
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • 在bash中用其他文件过滤一个文件

    我有一个带有数字的文件 例如 cat file 31038467 32048169 33058564 34088662 35093964 31018168 31138061 31208369 31538163 31798862 和其他例如
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从

随机推荐

  • React-路由懒加载

    路由的懒加载 将路由组件进行分包 可以提升首页的加载速度 提高用户的转化率 引入 import React lazy Suspense from react import BrowserRouter as Router NavLink Ro
  • dataframe中分行

    dataframe中对某一个cell进行分行 在工作中遇到类似下面的数据 index names 0 延 t诞 t蜒 1 奄 t掩 t淹 t俺 2 彦 t颜 t谚 3 央 t秧 t映 t殃 4 扬 t杨 t汤 t场 t肠 任务 需要对每个c
  • Sql语句整理(一)

    1 WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行 2 GROUP BY 子句用来分组 WHERE 子句的输出 3 HAVING 子句用来从分组的结果中筛选行 对于可以在分组操作之前或之后应用的任何搜索条件 在 WHERE
  • 关于智慧城市的中对智慧的理解

    自2010年IBM提出智慧城市概念以来 国内许多单位 政府 企业 纷纷提出建设 智慧 XX 口号 到底什么才能成为智慧 相比智能 区别在哪 有一类人认为智慧城市是运用信息和通信技术手段感测 分析 整合城市运行核心系统的各项关键信息 从而对包
  • tf.truncated_normal的用法

    tf truncated normal shape mean stddev shape表示生成张量的维度 mean是均值 stddev是标准差 这个函数产生正太分布 均值和标准差自己设定 这是一个截断的产生正太分布的函数 就是说产生正太分布
  • [JavaSE]变量与类型

    来到新的篇章 最近开始从C语言的学习跳转到JAVA了 以后大概都是更新java的篇章 本文章我们讲述java中的变量与类型 目录 1 整型变量 2 长整型变量 3 双精度浮点型变量 4 单精度浮点型变量 5 字符类型变量 6 字节类型变量
  • Python多行注释/取消注释快捷键

    step1 选中需要注释注释的所有代码 step2 按快捷键 系统 快捷键 Mac command Windows Linux Ctrl 取消注释同理 选中所有代码按快捷键 如果选中的代码中有注释有无注释 则会全部当做无注释加上注释
  • 必须要学的SQL Server 的常用语句(满满的干货),拿走不谢~~~

    文章目录 前言 一 基本常用语句 二 连接和分组 三 进阶级语句 函数 1 CASE WHEN 2 DATEDIFF 3 select嵌套 4 CAST 转换类型 5 GETDATE 函数 6 DISTINCT 总结 前言 前几天做项目的时
  • MS COCO数据集介绍

    本文直接从实用型角度介绍下coco数据集 以coco2014为例 下载资源以后 得到以下目录 annotations中存放的是一大堆json文件 注 带person和face的是我自己制作的json文件 截图时懒得删除 可以忽略 想了解如何
  • MPLS防环及IGP与LDP同步,理论+实战,两分钟全部掌握

    一 MPLS环路检测 LSP的防环是通过IGP路由防环的 只有IGP路由表中的下一跳分配的标签才会放入LFIB 只要IGP路由表没有环路 那么LSP也没有环路 LDP环路检测机制 1 距离向量法 标签绑定报文中记录路径信息 既标签交换路由器
  • 【Linux之Shell脚本实战】监控系统的磁盘空间使用率

    Linux之Shell脚本实战 监控系统的磁盘空间使用率 一 脚本要求 二 检查本地系统环境 1 检查系统版本 2 检查系统内核版本 三 编写disk sh脚本 1 创建脚本目录 2 编写disk sh脚本 3 执行测试脚本 四 查看脚本执
  • redis哨兵模式及主从配置

    例 现有3台服务器 需要配置1主1从3哨兵 服务器1 103 162 37 166 主 redis6380 哨兵1 sentinel26380 服务器2 103 162 37 167 从 redis6380 哨兵2 sentinel2638
  • 03-用Jupyter编写数学公式

    用jupyter编写数学公式 Contents 1 两种数学模式 2 空格 3 上标和下标 4 命令 5 符号 6 头标 7 括号 8 字体及其选项 9 转义字符 10 等式对齐 11 分段函数 12 一点总结 13 附录1 数学符号表 1
  • STM32F0x高级定时器之PWM模式

    脉冲宽度调制模式允许您生成一个信号 其频率由TIMx ARR寄存器的值确定 占空比由TIMx CCRx寄存器的值决定 通过在TIMx CCMRx寄存器的OCxM位中写入 110 PWM mode 1 或 111 PWM mode 2 可以在
  • WdatePicker 限制选择最小最大日期

    1 需求 限制最小 最大日期选择 如最小日期只能选择上一年度日期 最大日期只能选择到当天日期 2 解决 使用WdatePicker日期插件 设置minDate maxDate 代码如下 div class form group div
  • 通俗易懂的LLM(上篇)

    目录 前言 一 Tuning 1 Fine Tuning 微调 2 Prompt Tuning 提示微调 2 1 In context learning 上下文学习 2 2 Pattern Verbalizer Pair PVP 2 3 P
  • 分享一个卡通人物

    这几天较忙 像它一样 代码在这里
  • MySQL将以逗号分隔的数据分成多行,再合并为一行

    最近遇到个这样的问题 MySQL中的 影片表 中 演员列 的内容是用逗号分隔的多个id存储的 例 4356 9691 11337 然后需要把他换成id对应的演员名字 例 屈菁菁 王太利 肖央 看起来很复杂 其实只要把问题拆分一下就会非常简单
  • vue3+Element-plus el-select 下拉选择 多选增加全选封装组件(2023-09-20 TSelect组件新增自定义显示下拉项label)

    2023 09 20 TSelect组件新增自定义显示下拉项label 一 效果图 含适用于条件查询组件中使用 二 参数配置 1 代码示例
  • 16LinuxC进程间通信之mmap创建匿名映射区

    1 mmap创建匿名映射区 1 创建匿名映射区非常简单 只需要加上MAP ANONYMOUS即可 参数len长度可以随便大小 fd没有传 1即可 open这些函数可以不需要了 并且匿名映射实际上就是解决中间创建的文件问题 2 并且 匿名映射