通过Python访问在.NET中创建的内存映射文件
我用 .net 4 的 MemoryMappedFile.CreateNew(mapName, capacity) 创建了一个内存映射文件。
我可以通过 mapName 从 cpython 访问这个内存映射文件吗?
我试着这样做了。
import mmap
map = mmap.mmap(-1, 0, mapName, 1)
但是它返回了一个 WindowsError [错误 87],说参数不正确。
我正在使用 Windows Vista。
1 个回答
1
我对C#完全没有经验,但我会尽量回答你的问题。
CreateNew应该是用来创建一个不在文件系统中的文件映射。需要注意的是,这种方式并不支持跨平台。在Windows系统上,mmap.mmap的tagname参数可以让你映射这些带标签的映射。因为这个映射不是由文件支持的,所以fileno用-1是对的。长度为0会获取整个映射。问题在于访问权限。有提到如果不提供访问参数,在Windows上会得到写入映射,你可以试着实验一下这个。
如果这些都不行,可以考虑使用一个有文件支持的内存映射,这样更通用,也更常见。C#的MemoryMappedFile类提供了CreateFromFile方法来实现这个。