2010-07-15 3 views
0

Я сделал в памяти, в файл, используя MemoryMappedFile.CreateNew (MapName, мощности) Нетто 4доступа отображается файл, созданный на .net с помощью питона

Могу ли я получить доступ к этой ММФ по MapName от CPython?

Я пробовал, как показано ниже.

import mmap 
map = mmap.mmap(-1, 0, mapName, 1) 

, но он возвращает WindowsError [ошибка 87], указав параметр неверным.

Я использую windows vista.

+0

Я думаю, что у вас сильно искаженное отображение памяти. –

+0

@Matt, я тоже думаю, что я в замешательстве. Но я сделал mmf в системной памяти, используя выше указанную функцию .net, и получаю доступ к ней из другого процесса (другого приложения .net) эффективно. Итак, я просто догадываюсь, что возможно получить доступ к этой системной памяти из python, bcs - общие данные - это простые старые данные. –

ответ

0

У меня нет абсолютно никакого опыта работы с C#, но я попытаюсь ответить на ваш вопрос.

CreateNew должен создать сопоставление с файлом, который не находится в файловой системе. Обратите внимание, что это не перекрестная платформа. В Windows параметр тэга mmap.mmap должен позволять вам сопоставлять эти помеченные сопоставления. Так как отображение не поддерживается файлом, верно и -1 для fileno. Длина 0 будет получать полное отображение. Тогда проблема связана с доступом. Следует упомянуть, что не предоставление параметра доступа даст возможность записи через Windows, вы можете попробовать экспериментировать с этим.

Если все остальное не работает, попробуйте вернуться к использованию сопоставления памяти с поддержкой файлов, более портативным и более распространенным. Класс C# MemoryMappedFile предоставляет для этого метод CreateFromFile.

+0

Thnx Matt .. Он по-прежнему терпит неудачу с разными вариантами доступа, но я понял, что это «не файловая поддержка» - это только функция Windows. –

+0

Я имею в виду, попробуйте не предоставлять параметр доступа вообще. Кажется, это то, что предлагает доко. –