error in getting shared vector

I am woking on IPC shared memory where i am loading one vector in memory by process1 and using the same with another program. but in process2 i am getting one error whie this code is same as given http://www.boost.org/doc/libs/1_38_0/doc/html/interprocess/quick_guide.html#.... I am just doing benchmarking. May i know what is the reason behind this? Process1. #include <boost/interprocess/managed_shared_memory.hpp> #include <boost/interprocess/containers/vector.hpp> #include <boost/interprocess/allocators/allocator.hpp> int main () { using namespace boost::interprocess; try{ //Shared memory front-end that is able to construct objects //associated with a c-string. Erase previous shared memory with the name //to be used and create the memory segment at the specified address and initialize resources shared_memory_object::remove("MySharedMemory"); managed_shared_memory segment (create_only ,"MySharedMemory" //segment name ,65536); //segment size in bytes //Alias an STL compatible allocator of ints that allocates ints from the managed //shared memory segment. This allocator will allow to place containers //in managed shared memory segments typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator; //Alias a vector that uses the previous STL-like allocator typedef vector<int, ShmemAllocator> MyVector; //Initialize shared memory STL-compatible allocator const ShmemAllocator alloc_inst (segment.get_segment_manager()); //Construct a shared memory MyVector *myvector = segment.construct<MyVector>("MyVector") //object name (alloc_inst);//first ctor parameter //Insert data in the vector for(int i = 0; i < 100; ++i){ myvector->push_back(i); } } catch(...){ shared_memory_object::remove("MySharedMemory"); throw; } shared_memory_object::remove("MySharedMemory"); return 0; } Process2 #include <boost/interprocess/managed_shared_memory.hpp> #include <boost/interprocess/containers/vector.hpp> #include <boost/interprocess/allocators/allocator.hpp> #include <algorithm> #include <iostream> int main () { using namespace boost::interprocess; try{ //A special shared memory where we can //construct objects associated with a name. //Connect to the already created shared memory segment //and initialize needed resources managed_shared_memory segment (open_only ,"MySharedMemory"); //segment name //Alias an STL compatible allocator of ints that allocates ints from the managed //shared memory segment. This allocator will allow to place containers //in managed shared memory segments typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator; //Alias a vector that uses the previous STL-like allocator typedef vector<int, ShmemAllocator> MyVector; //Find the vector using the c-string name MyVector *myvector = segment.find<MyVector>("MyVector").first; for (MyVector::iterator it = myvector->begin(); it!=myvector->end(); it++) { std::cout << *it << "\n"; } //Use vector in reverse order std::sort(myvector->rbegin(), myvector->rend()); // . . . //When done, destroy the vector from the segment segment.destroy<MyVector>("MyVector"); } catch(...){ shared_memory_object::remove("MySharedMemory"); throw; } shared_memory_object::remove("MySharedMemory"); return 0; } Error Message: terminate called after throwing an instance of 'boost::interprocess::interprocess_exception' what(): No such file or directory Aborted -- View this message in context: http://www.nabble.com/error-in-getting-shared-vector-tp25485820p25485820.htm... Sent from the Boost - Users mailing list archive at Nabble.com.
participants (1)
-
manish4gupta