0
我正在研究beaglebone(运行Angstrom Linux)并尝试使用Python的mmap
模块获取对/dev/mem
文件的读写权限。为什么mmap返回零大小?
但是,由于某些原因,下面的代码打印出的值为零。我对mmap相当陌生,我不确定是否有什么明显的缺失。
from mmap import mmap
mmap_offset=0x44c00000
mmap_size=0x48ffffff-mmap_offset
with open("/dev/mem", "r+b") as f:
testMap=mmap(f.fileno(),mmap_size,offset=mmap_offset)
print testMap.size()
print testMap[0]
回报:
0
8
[The docs](http://docs.python.org/2/library/mmap.html#mmap.size)say *“返回文件的长度,该长度可以大于内存的大小“*也许这是因为所有设备节点根据'stat()'有一个表观大小为0?如果你真的试图从mmap对象中获取数据会发生什么? – cdhowie 2013-05-08 16:18:39
@cdhowie说什么。另外,我认为你的意思是“0x49000000”而不是“0x48ffffff”,因为使用“0x48ffffff”,你最终不会映射最后一页的最后一个字节。 – Celada 2013-05-08 16:27:05
我已经更新了代码,我认为它可以解答你的问题......它看起来像是存储器映射中的值。我不熟悉'stat()' – Chris 2013-05-08 16:28:07