确定文件映射到内存的次数

2024-02-23

是否可以获取 Linux 中特定文件描述符上的内存映射总量?为了清楚起见,我制作了一个如何打开/创建内存映射的小示例代码:

int fileDescriptor = open(mapname, O_RDWR | O_CREAT | O_EXCL, 0666);
if(fileDescriptor < 0)
    return false;

//Map Semaphore
memorymap = mmap(NULL, sizeof(mapObject), PROT_READ | PROT_WRITE, MAP_SHARED, fileDescriptor, 0);
close(fileDescriptor); 

内存映射由多个进程使用。我可以访问将使用此内存映射的其他进程的代码库。如何以 100% 正确的方式获取 fileDescriptor 上有多少个映射?


您可以检查所有/proc/*/maps文件并计算内存映射文件被提及的次数。

例如,内存映射“/tmp/delme”是这样提到的

7fdb737d0000-7fdb737d1000 rw-s 00000000 08:04 13893648                   /tmp/delme
7fdb737d8000-7fdb737d9000 rw-s 00000000 08:04 13893648                   /tmp/delme

当使用以下代码时:

// g++ -std=c++11 delme.cc && ./a.out
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <fstream>
#include <iostream>

int main() {
  int fileDescriptor = open("/tmp/delme", O_RDWR, 0664);
  if (fileDescriptor < 0) return false;
  auto memorymap = mmap (NULL, 123, PROT_READ | PROT_WRITE, MAP_SHARED, fileDescriptor, 0);
  auto memorymap2 = mmap (NULL, 123, PROT_READ | PROT_WRITE, MAP_SHARED, fileDescriptor, 0);
  close (fileDescriptor);
  std::ifstream mappings ("/proc/self/maps");
  std::cout << mappings.rdbuf() << std::endl;
}

也可以看看了解 Linux /proc/id/maps https://stackoverflow.com/questions/1401359/understanding-linux-proc-id-maps.

如果您发出全局锁,以防止在计数发生时发生任何映射和取消映射,则该计数器将是100%正确.

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

确定文件映射到内存的次数 的相关文章

  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • IronPython:没有名为 json 的模块

    我安装了 IronPython 我的 python 文件如下所示 import sys print sys version import json 运行它的代码 var p Python CreateEngine var scope p C
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 我在在线程序挑战编译器中遇到演示错误

    include
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 在 C++ 程序上使用 mpicc 链接失败

    我正在运行 Ubuntu 11 04 64 位 我已经安装了 OpenMPI 我正在尝试构建以下代码 这是 Gropp Lusk Skjellum 所著的 Using MPI 一书中测试问题的片段 include
  • 在java中如何拥有具有唯一键的HashMap?

    在 Java 中如何获得具有唯一键的 HashMap 或者甚至在 HashMap 中拥有唯一的键是否有意义 或者默认情况下键是唯一的 我是新手 谢谢 哈希映射键是唯一的 添加重复的密钥 然后它将被覆盖 HashMap hm new Hash
  • PE文件中的MZ签名有什么用?

    我正在开发一个程序 它将解析 PE 对象以获取各种信息 但阅读规范后 我无法找出为什么存在 MZ 字节 因为我无法在这 2 个字节应该代表的机器类型列表中找到它 谁能澄清一下吗 MZ 签名是 MS DOS 可重定位 16 位 EXE 格式使
  • 即时搜索算法

    哪种类型的算法对于搜索正在搜索的内容最快 我意识到这已经很接近于问谷歌即时搜索是如何工作的了 但我不是算法专家 而且我对它们越来越感兴趣 像这样的搜索是使用后缀树或类似的东西完成的吗 我想我只是对查询小字符串感兴趣 而不是像谷歌那样查询大量
  • 将 HttpClient 与 SOAP 结合使用

    我一直在尝试使用 Net Framework 4 7 中的 HTTPClient 对象来创建简单的 SOAP 请求 我已经使用了 Postman 中的参数 它工作得很好 这是我的代码 string url http webservices
  • 在 Java 中获取“外部”IP 地址

    我不太确定如何获取机器的外部 IP 地址 因为网络外部的计算机会看到它 我的以下 IPAddress 类仅获取计算机的本地 IP 地址 public class IPAddress private InetAddress thisIp pr
  • ASP.NET 健康监控 404 事件

    HealthMonitoring 是否有捕获 404 错误的内置事件 我已尝试设置所有事件 通过使用 webBaseEvent 并且搜索了两天 但我无法找到或触发未找到文件的事件 我可以创建自己的活动 但希望有一个内置的活动 不 事实并非如
  • window.onload 似乎在 DOM 加载之前触发(JavaScript)

    我遇到了问题window onload and document onload事件 我读到的所有内容都告诉我 在 DOM 完全加载所有资源之前 这些不会触发 这似乎不会发生在我身上 我在 Chrome 4 1 249 1036 41514
  • Twitter 引导下拉菜单在点击时禁用了按钮的原始功能

    所以我刚刚开始使用引导程序的下拉菜单 这很方便 但我有一个问题 为了让下拉菜单发挥作用 似乎在添加 html 属性时完全禁用了触发下拉的元素 dropdown toggle 的原始功能data toggle dropdown 这是有道理的
  • 如何找到未记录的 .NET / COM 库函数?

    如何找出从某些 NET 函数返回的 COM 对象的属性和方法 而这些函数似乎没有记录 在我正在查看的特定示例中 我使用以下函数将图片插入 Excel 中 Set NewPic ActiveSheet Pictures Insert File
  • 无法确定主机“github.com(192.30.252.128)”的真实性

    我正在尝试使用 sudo npm install 为用 Node js 编写的应用程序安装所有依赖项 我的操作系统是 Ubuntu 13 04 但是 我不断收到此警告 The authenticity of host github com
  • 为什么将演示文稿保存到类似文件的对象会产生空白演示文稿?

    作为回应这个答案 https stackoverflow com a 46980767 1868136对于我之前的问题 我编写了以下简短的程序来尝试重现该问题 from pptx import Presentation from io im
  • 即使调用“SetWindowPos()”后,“SetWindowLong()”函数也不会更改窗口样式

    我使用以下代码创建静态控件 hWnd CreateWindowExW 0 L STATIC Content c str SS LEFT WS VISIBLE WS CHILD SS SUNKEN 200 120 120 40 hWndPar
  • 如何使用 PyUSB 写入控制端点

    我有一个 USB 设备 其代码如下 import usb core import usb util device usb core find idVendor 0xC251 idProduct 0x2201 print device pro
  • 作为类中的成员“变量”起作用

    我正在考虑如何使用一些先进的技术来改进我的简单计算器 我想问 是否有某种方法可以创建一个具有可以为每个实例定义的函数的类 class Function public Function function Function private fu
  • Android 设备的后退和主页按钮按下事件 (cocos2d-x 3)

    我这样做是为了抓住Home and BackAndroid 设备上的按钮按下事件 被覆盖void Layer onKeyReleased EventKeyboard KeyCode keyCode Event event 像这样的函数 vo
  • 线程优先级和线程精度

    线程优先级会提高准确性吗Thread sleep 50 我们知道 当您调用 sleep 50 毫秒时 线程并不准确 但是它是否会提高准确性呢 如果线程被列为MAX PRIORITY 将感谢任何形式的解释 睡眠的准确性取决于操作系统 如果您想
  • 无法访问 HTMLCollection 的值

    测试 html
  • 单个 SQL 查询查找数据库中所有列中的空值

    我想确定所有表中每列中空值的数量 我有一个数据库 它由大约 250 个表组成 其中大多数都在使用中 问题是几乎所有表都包含为某些短期创建的不需要的列术语使用 现在我们想要识别所有表中具有空值的列 由于表的计数很大并且时间较少 我想知道一种最
  • 确定文件映射到内存的次数

    是否可以获取 Linux 中特定文件描述符上的内存映射总量 为了清楚起见 我制作了一个如何打开 创建内存映射的小示例代码 int fileDescriptor open mapname O RDWR O CREAT O EXCL 0666