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 ++等)打開路徑中的文件,它不能因爲它斷言該文件不存在。
感謝您的時間!