Je suis sur le point d'utiliser la mémoire partagée pour la communication interprocessus (évidemment;) entre une extension xulrunner (composant) et un plugin (NPAPI). Les deux sont écrits en C++!Boost.Interprocess - créé managed_shared_memory est introuvable
je suivais les instructions du boost lib document
maintenant: La création de la mémoire partagée fonctionne bien en faisant ceci:
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) ;
Le chemin
C:\Users\All Users\boost_interprocess\<aNumber>\
me montre une fichier nommé cryptique, pendant le processus est en cours d'exécution. En fermant le programme, ce fichier est supprimé. Jusqu'ici tout va bien.
je tente d'ouvrir cette mémoire partagée dans un autre processus avec:
NS_BI::managed_shared_memory(NS_BI::open_read_only, "MySharedMemory") ;
, mais il lance le boost :: :: interprocessus interprocess_exception système ne peut pas trouver le fichier spécifié
Si je fais
NS_BI::managed_shared_memory(NS_BI::open_or_create, "MySharedMemory", 1024) ;
Je reçois un deuxième fichier dans le chemin Utilisateurs dans le même sous-répertoire. Alors, pourquoi le premier ne pouvait-il pas être trouvé par le processus de consommation? Btw: Si j'essaie d'ouvrir le fichier dans le chemin avec un texteditor (notepad ++, etc), il ne pourrait pas parce qu'il affirme que le fichier n'existe pas.
Merci pour votre temps !!!