0
我即将使用共享内存进行xulrunner扩展(组件)和插件(NPAPI)之间的进程间通信(显然;)。两者都是用C++编写的!Boost.Interprocess - 创建的managed_shared_memory找不到
现在说明:共享内存的创建工作正常通过这样做:
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_exception 系统找不到指定的文件
如果我这样做
NS_BI::managed_shared_memory(NS_BI::open_or_create, "MySharedMemory", 1024) ;
我在用户路径中的第二个文件在完全相同的子目录中。 那么为什么第一个不能被消费者过程找到呢?
顺便说一句:如果我试图用texteditor(notepad ++等)打开路径中的文件,它不能因为它断言该文件不存在。
感谢您的时间!