接收端
QSharedMemory sharedMemory("MySharedMemory");
if(!sharedMemory.create(256)){
qDebug() << sharedMemory.errorString();
return -1;
}
QTimer timer;
QObject::connect(&timer, &QTimer::timeout, [&]() {
char * from = (char *)sharedMemory.data(); // 获取共享内存块指针
if (from!= nullptr) {
QString readMessage = QString::fromUtf8(from); // 假设消息是以UTF-8编码存储的, 将其转换为QString类型以便处理
if(!readMessage.isEmpty()){
// 接收成功
qDebug() << "从共享内存读取的消息为: " << readMessage;
// 清空内存
QString message = ""; // 创建消息
strcpy(from, message.toStdString().c_str()); // 写入
}
} else {
qDebug() << "共享内存数据指针为空";
}
});
timer.start(1000); // 设置定时器间隔为1秒(1000毫秒), 并启动定时器
发送端
QSharedMemory sharedMemory("MySharedMemory");
if(!sharedMemory.attach()){
qDebug() << "无法附加共享内存";
return ;
} else {
qDebug() << "successful";
}
QString message = "共享内存中的消息"; // 创建消息
char * to = (char *)sharedMemory.data(); // 获取共享内存块指针
strcpy(to, message.toStdString().c_str()); // 写入消息
sharedMemory.detach(); // 关闭与共享内存的关联