Python mmap / dev / port

是否可以mmap / dev / port? 当我尝试时,我得到“没有这样的设备”。

Python 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> import mmap >>> os.open('/dev/port', os.O_RDWR|os.O_NDELAY) 3 >>> mapfd = mmap.mmap(3, 0xfff) Traceback (most recent call last): File "<stdin>", line 1, in <module> mmap.error: [Errno 19] No such device >>> 

我已经能够使用相同的选项来映射常规文件。

Errno 19被列为“没有这样的设备”(Linux),或“操作不被设备支持”(FreeBSD)。

查看drivers/char/mem.c /dev/port的源代码,特别是struct file_operations ,你会看到 :

 770 #ifdef CONFIG_DEVPORT 771 static const struct file_operations port_fops = { 772 .llseek = memory_lseek, 773 .read = read_port, 774 .write = write_port, 775 .open = open_port, 776 }; 777 #endif 

该设备不支持mmap。 只有开放,寻求,阅读和写作。

正如已经指出的, /dev/port不是mmap -able。 但看到你如何使用python – 让我们利用动态类型的真正力量! 为什么不创建一个支持相同接口的类mmap对象,但在下面使用lseek