我不知道如何在 Python 中获取标准 mmap 对象的虚拟地址(从 mmap 模块)。 记录的方法似乎只能以字节数组或字符串的形式访问内存。
但我需要一次精确访问 2 或 4 个字节的 mmap 内存 - 因为我的应用程序中的内存映射到硬件寄存器(想想/dev/mem 或 GPIO 等)。使用 ctypes 模块可以以这种方式访问内存 - 但为此我需要映射的指针 - 或虚拟地址。
目前,我通过使用 libc 中的原生 open() 和 mmap() 函数(感谢相同的 ctypes)克服了这个问题,但我宁愿不这样做。
为什么 mmap 模块不提供简单的方法来获取内存地址?希望我遗漏了一些明显的东西......
-- dd
最佳答案
mmap
对象支持可写缓冲区接口(interface),因此您可以使用 ctypes
类具有的 from_buffer
类方法和 mmap
对象作为参数获取共享 mmap
文件内存的 ctypes
对象。
buf = mmap.mmap(fd, mmap.PAGESIZE, mmap.MAP_SHARED, mmap.PROT_WRITE)
int_pointer = ctypes.c_int.from_buffer(buf)
关于python - 如何在 Python 中获取 mmap-ed 内存的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364876/