Python mmap /dev/端口

发布于 2025-01-07 07:16:19 字数 526 浏览 1 评论 0原文

是否可以 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
>>> 

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

Is it possible to mmap /dev/port? I'm getting 'No such device' when I try.

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
>>> 

I've been able to mmap a regular file with the same options.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花桑 2025-01-14 07:16:19

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

此设备不支持映射。只有打开、寻找、阅读和写作。

Errno 19 is listed as "No such device" (Linux), or "Operation not supported by device" (FreeBSD).

Looking at the source code for /dev/port in drivers/char/mem.c, especially the struct file_operations, you'll see:

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

This device doesn't support mmap. Only opening, seeking, reading and writing.

眼泪淡了忧伤 2025-01-14 07:16:19

正如已经指出的,/dev/port 不支持 mmap。但是看看您如何使用 python —— 让我们利用动态类型的真正力量!为什么不创建一个类似 mmap 的对象,它支持相同的接口,但在底层使用 lseek 呢?

As has been pointed out, /dev/port isn't mmap-able. But seeing as how you're using python -- let's harness the true power of dynamic types! Why not create an mmap-like object which supports the same interface, but uses lseek underneath?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文