Я собираюсь использовать общую память для межпроцессного взаимодействия (очевидно;) между расширением (компонентом) xulrunner и плагином (NPAPI). Оба написаны на C++!
Я следовал инструкциям увеличить документ библиотеки
Теперь: создание общей памяти работает нормально, выполнив следующее:
struct shm_remove
{
shm_remove() { NS_BI::shared_memory_object::remove("MySharedMemory"); }
~shm_remove() { NS_BI::shared_memory_object::remove("MySharedMemory"); }
} remover;
_myShMemSegment = NS_BI::managed_shared_memory( NS_BI::open_or_create, "MySharedMemory", 65536 ) ;
SHMEM_ALLOCATOR alloc_inst( _myShMemSegment.get_segment_manager() ) ;
_pMyShMemMap = _myShMemSegment.construct<SHMEM_MAP>("cgfMap")
(std::less<int>()
, alloc_inst) ;
Путь
C:\Users\All Users\boost_interprocess\<aNumber>\
показывает мне загадочный именованный файл во время выполнения процесса. При закрытии программы этот файл удаляется. Все идет нормально.
Я пытаюсь открыть эту общую память в другом процессе с помощью:
NS_BI::managed_shared_memory( NS_BI::open_read_only, "MySharedMemory") ;
но затем выдает boost::interprocess::interprocess_exception Система не может найти указанный файл
If I do
NS_BI::managed_shared_memory( NS_BI::open_or_create, "MySharedMemory", 1024) ;
Я получаю второй файл в пути пользователей в том же подкаталоге. Так почему же процесс-потребитель не может найти первый?
Кстати: если я пытаюсь открыть файл в пути с помощью текстового редактора (блокнот ++ и т. д.), он не может, потому что он утверждает, что файл не существует.
Спасибо за ваше время!!!