Boost logo

Boost Users :

Subject: [Boost-users] Help with custom classes PLEASE!!
From: Daniel Veneros (dann.vd_at_[hidden])
Date: 2010-02-01 16:23:41


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 <boost/interprocess/managed_shared_memory.hpp>

#include <boost/interprocess/containers/vector.hpp>

#include <boost/interprocess/allocators/allocator.hpp>

#include <cstdlib>

#include <string>

#include <iostream>

using namespace boost::interprocess;

typedef allocator<std::string, managed_shared_memory::segment_manager>
ShMemAllocator;

typedef vector<std::string, ShMemAllocator> 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 <boost/interprocess/managed_shared_memory.hpp>

#include <boost/interprocess/containers/vector.hpp>

#include <boost/interprocess/allocators/allocator.hpp>

#include <cstdlib>

#include <string>

#include <iostream>

using namespace boost::interprocess;

typedef allocator<std::string, managed_shared_memory::segment_manager>
ShMemAllocator;

typedef vector<std::string, ShMemAllocator> 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



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net