有人可以解释一下在这种情况下 0 是如何影响 python 中的 mmap 的吗:
mmap.mmap(0 , 256, "some tag")
我以为我总是需要传输文件描述符而不是 0,那为什么是 0?
最佳答案
从阅读 CPython 2.7 源代码来看,似乎在 Windows 上,指定 fileno = 0
与指定 fileno = -1
具有相同的效果,后者的意思是“映射匿名内存”。
在 Unix 上仅接受 -1
:在我的 64 位 Ubuntu 机器上使用 Python 2.6.5,mmap.mmap(0, 256)
失败并返回 errno=19(没有这样的设备)
和 mmap.mmap(-1, 256)
工作正常。
底线:fileno = 0
是 fileno = -1
的非可移植 Windows 变体。它可能会被弃用(代码中甚至有一个注释掉的警告)。
附言有问题的 CPython 源文件是 Modules/mmapmodule.c
。
关于python - 在 python 中使用 mmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6860180/