我正在使用beaglebone(运行Angstrom Linux)并尝试使用Python的mmap
模块来获取对/dev/mem
文件的读写权限。
但是,出于某种原因,下面的代码打印的值为零。我对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
答案 0 :(得分:1)
因为/dev/mem
查询的设备inode在stat()
查询时报告的大小为0。这就是特殊设备节点的实现方式,因为询问设备节点的大小并不常见。 (请考虑/dev/zero
,/dev/kbd
,/dev/urandom
以及用于通信而非数据存储的任何设备节点,例如代表照片扫描仪或输入设备的设备节点。)
您仍然可以从mmap句柄中检索数据。