Я хочу написать простое приложение с ускорением, которое передает строковый объект другому процессу. Он хорошо компилируется, но когда я пытаюсь распечатать строку из второго процесса, в консоль выводятся следующие сообщения, и второй процесс падает:
../boost
44_0/boost/interprocess/sync/posix/interprocess_recursive_mutex.hpp:107: void boost::interprocess::interprocess_recursive_mutex::unlock(): Утверждение `res == 0' не удалось.shared_memory_object::remove(SHARED_MEMORY_NAME); managed_shared_memory mshm(create_only, SHARED_MEMORY_NAME, SHARED_MEMORY_SIZE ); mshm.construct<string>( IP_STRING_NAME )("Message to other process"); string syscall(argv[0]); std::system( (syscall+" &").c_str() ); //starting second process
первый код процесса:
shared_memory_object::remove(SHARED_MEMORY_NAME);
managed_shared_memory mshm(create_only, SHARED_MEMORY_NAME, SHARED_MEMORY_SIZE );
mshm.construct<string>( IP_STRING_NAME )("Message to other process");
string syscall(argv[0]);
std::system( (syscall+" &").c_str() ); //starting second process
второй код процесса:
managed_shared_memory mshm( open_or_create, SHARED_MEMORY_NAME, SHARED_MEMORY_SIZE );
std::pair<string * , size_t > p= mshm.find<string>(IP_STRING_NAME);
cout<<"string is "<<*p.first<<endl;
Как я могу заставить мое приложение работать должным образом?