Hi, I am trying to create a shared memory segment where I can share a STRING
between 2 process, I tried using the following code:
*In the "main" process:*
#include
#include
#include
#include <cstdlib>
#include <string>
#include <iostream>
using namespace boost::interprocess;
typedef allocator
ShMemAllocator;
typedef vector MyVector;
int main(int argc, char** argv) {
struct shm_remove {
shm_remove() {shared_memory_object::remove("MySharedMemory"); }
~shm_remove() {shared_memory_object::remove("MySharedMemory"); }
}remover;
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
const ShMemAllocator alloc_inst(segment.get_segment_manager());
MyVector *myVector = segment.construct<MyVector>("MyVector"
)(alloc_inst);
myVector->push_back("a");
int stop; //this line helps me wait until i run the other process
std::cin >> stop;
return (EXIT_SUCCESS);
}
*at the "client" process:*
#include
#include
#include
#include <cstdlib>
#include <string>
#include <iostream>
using namespace boost::interprocess;
typedef allocator
ShMemAllocator;
typedef vector MyVector;
int main(int argc, char** argv) {
managed_shared_memory segment(open_only, "MySharedMemory");
MyVector *myVector = segment.find<MyVector>("MyVector").first;
std::cout << "myVector size: " << myVector->at(0) << std::endl;
return (EXIT_SUCCESS);
}
When I run both I receive an error "Segmentation Fault, Core Dumped"...
Does anyone know how to solve this?
Thanks
Dann