44 explicit SHMChild(
const std::string& region_name) :
48 fd = shm_open(region_name.c_str(), O_RDWR, S_IRUSR | S_IWUSR);
49 filename = region_name;
53 fprintf(stderr,
"Failed to open IPC region '%s': %s\n", filename.c_str(), strerror(errno));
58 if ( shmPtr == MAP_FAILED ) {
60 fprintf(stderr,
"mmap 0 failed: %s\n", strerror(errno));
64 tunnel =
new TunnelType(shmPtr);
65 shmSize = tunnel->getTunnelSize();
69 shmPtr = mmap(
nullptr, shmSize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
70 if ( shmPtr == MAP_FAILED ) {
72 fprintf(stderr,
"mmap 1 failed: %s\n", strerror(errno));
75 uint32_t childnum = tunnel->initialize(shmPtr);
76 if ( childnum == 0 ) {
77 shm_unlink(filename.c_str());