29 #ifndef CUNIXSHAREDMEMORY_HPP_
30 #define CUNIXSHAREDMEMORY_HPP_
35 #include <sys/types.h>
65 template<
typename MemType,
typename SignalType>
69 CSharedMemory(
const key_t& arg_shmem_key,
const SignalType& arg_term_cond):
71 key_(arg_shmem_key), has_been_init_(
false) {}
84 shmem_id_ = shmget(key_,
sizeof(MemType)+
sizeof(SignalType), IPC_CREAT | 0666);
87 perror(
"CSharedMemory::create() : Error: shmget could not create shared memory");
92 void* shmem = shmat(shmem_id_, NULL, 0);
94 if(shmem == (
void *) -1)
96 perror(
"CSharedMemory::create() : Error: shmat could not attach shared memory");
104 has_been_init_ =
true;
118 shmem_id_ = shmget(key_,
sizeof(MemType)+
sizeof(SignalType), 0666);
121 perror(
"CSharedMemory::create() : Error: shmget could not create shared memory");
126 void* shmem = shmat(shmem_id_, NULL, 0);
128 if(shmem == (
void *) -1)
130 perror(
"CSharedMemory::create() : Error: shmat could not attach shared memory");
138 has_been_init_ =
true;
159 if(0 != shmdt(reinterpret_cast<const void *>(
data_signal_)))
161 perror(
"CSharedMemory::detach() : Error: shmat could not detach shared memory");
165 has_been_init_ =
false;
178 if(0 != shmdt(reinterpret_cast<const void *>(
data_signal_)))
180 perror(
"CSharedMemory::detach() : Error: shmat could not detach shared memory");
184 has_been_init_ =
false;
SignalType data_terminate_
Definition: CSharedMemory.hpp:198
bool shmCreate()
Definition: CSharedMemory.hpp:76
bool shmRead()
Definition: CSharedMemory.hpp:110
bool shmCheckDetach()
Definition: CSharedMemory.hpp:152
MemType * data_
Definition: CSharedMemory.hpp:192
bool shmAlive()
Definition: CSharedMemory.hpp:144
bool shmDetach()
Definition: CSharedMemory.hpp:172
Definition: CSharedMemory.hpp:66
SignalType * data_signal_
Definition: CSharedMemory.hpp:195