Process1.cpp
#include
#include
#include
#include
#include <iostream>
#include <vector>
#include <fstream>
using namespace boost::interprocess;
typedef managed_shared_memory::segment_manager segment_manager_t;
typedef allocator void_allocator;
typedef allocator char_allocator;
typedef basic_string
char_string;
typedef std::pair map_value_type;
typedef allocator
map_value_type_allocator;
typedef multimap< char_string, char_string, std::less,
map_value_type_allocator> complex_map_type;
std::string trim(const char *str)
{
std::string ptr;
int i,j=0;
for(i=0;str[i]!='\0';i++)
{
if (str[i] != ' ' && str[i] != '\t')
ptr += str[i];
}
return ptr;
}
int main (int argc, char* argv[])
{
using namespace std;
const char* MySharedMemory= "MySharedMemory";
shared_memory_object::remove(MySharedMemory); // It works
fine but when put on comment then
managed_shared_memory segment(open_or_create,MySharedMemory, 999999999);
void_allocator alloc_inst (segment.get_segment_manager());
complex_map_type *mymap =
segment.construct("MyMap")(std::less(),
alloc_inst);
std::cout << mymap->size() << std::endl;
ifstream in(argv[1]);
char line[1000];
char recline[100];
int index = 0;
while(in)
{
in.getline(line,1000);
int len = strlen(line);
strcpy(recline,line);
if(in)
{
std::stringstream ss;
//std::cout << index << endl;
ss<< index;
char name[1000];
strcpy(name, "1:");
std::cout << name << endl;
char* pch;
pch = strtok(line,"\t");
vector vec;
while(pch != NULL)
{
vec.push_back(pch);
pch = strtok(NULL,"\t");
}
std::string y = trim(vec[vec.size()-1]);
std::cout << y << endl;
char_string cs(y.c_str(), alloc_inst);
strcat(name, (ss.str()).c_str());
char_string indexvalue(name, alloc_inst);
std::cout << cs << "\t" << indexvalue << std::endl;
mymap->insert(std::pair(cs,indexvalue));
index += len;
index += 1;
}
}
return 0;
}
It works fine if i create a new sharedmemroy and use it but when i run this
code again by putting comment on
shared_memory_object::remove(MySharedMemory) to use the existing
Sharedmemory and map in it.
Exception
terminate called after throwing an instance of
'boost::interprocess::interprocess_exception'
what(): boost::interprocess_exception::library_error
Aborted
What is the reason for this? And how can i overcome such pblm? Thanks in
advance.
Christoph Gysin-3 wrote:
2009/10/22 manish4gupta :
I am working on shared memory. I am successful in using it but I am
trying
Please provide more detailed information about your problem. Add a
short (compilable) example demonstrating the problem, including the
complete error message. Also provide information about your operating
system, compiler, etc...
Don't just post the same question again. Thanks.
Chris
--
echo mailto: NOSPAM !#$.'<*>'|sed 's. ..'|tr "<*> !#:2" org@fr33z3
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users
--
View this message in context: http://www.nabble.com/Information-about-create_only-and-open_or_create-tp259...
Sent from the Boost - Users mailing list archive at Nabble.com.