0

我正在研究 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
4

1 回答 1

1

因为设备 inode/dev/mem在被 查询时报告的表观大小为 0 stat()。这只是特殊设备节点的实现方式,因为询问设备节点的大小通常没有用处。(考虑/dev/zero/dev/kbd/dev/urandom和任何用于通信而非数据存储的设备节点,例如表示照片扫描仪或输入设备的设备节点。)

您仍然应该能够从 mmap 句柄中检索数据。

于 2013-05-08T16:33:21.497 回答