gpt4 book ai didi

c++ - 用 C++ 等效项替换 C 内存映射

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:54 25 4
gpt4 key购买 nike

我正在将 Raspberry Pi 3B 的一些 C 代码转换为 C++。这部分C代码,

   // Open /dev/mem
if ((p->mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) {
printf("Failed to open /dev/mem, try checking permissions.\n");
return -1;
}

p->map = mmap(
NULL,
BLOCK_SIZE,
PROT_READ|PROT_WRITE,
MAP_SHARED,
p->mem_fd, // File descriptor to physical memory virtual file '/dev/mem'
p->addr_p // Address in physical map that we want this memory block to expose
);

提出挑战。直接的问题是 C open 函数返回的文件描述符。 C++ 使用 fstream,它将用于打开文件,但是当我到达 C 函数 mmap 时,我没有文件描述符。

mmap 将文件映射到内存中。

这是一个学习实验,我想坚持使用 C++。

这确实让人想到一个问题。 RPi 操作系统 Raspbian 内置了所有这些 C 函数。它是否也有内置的 C++ 等价物,或者是否期望使用 C 函数和可能的 extern "C" 语句?

最佳答案

您可以使用 boost::interprocess 实现您想要的效果

http://www.boost.org/doc/libs/1_57_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_file

我很好奇你在 C++ 代码中使用 mmap 有什么问题?

关于c++ - 用 C++ 等效项替换 C 内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com