这里用模板泛化一下
template<typename T>
int saveToShm(const T& obj) {
key_t key = gen_shm_key();
int shmId = shmget(key, sizeof(T), IPC_CREAT | 0666);
if (shmId == -1) {
perror("shmget");
return -1;
}
T* ptr = static_cast<T*>(shmat(shmId, nullptr, 0));
if (ptr == reinterpret_cast<T*>(-1)) {
perror("shmat");
return -1;
}
memcpy(ptr, &obj, sizeof(T));
shmdt(ptr);
return 0;
}
template<typename T>
T loadFromShm() {
key_t key = gen_shm_key();
int shmId = shmget(key, sizeof(T), 0666);
if (shmId == -1) {
perror("shmget");
exit(1);
}
T* ptr = static_cast<T*>(shmat(shmId, nullptr, 0));
if (ptr == reinterpret_cast<T*>(-1)) {
perror("shmat");
exit(1);
}
T obj;
memcpy(&obj, ptr, sizeof(T));
shmdt(ptr);
return obj;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)