2
我想将4 - 5个变量写入QSharedMemory,但我不知道要读取和写入该数据。如何在QT中的QShared内存中写入多个数据
我有五个变量A,B,C,D,E不同的数据类型。在下面的程序中,我将变量A写入共享内存。如何写其他变量也一样?
该程序写入共享内存。
if(sharedMem.isAttached())
{
sharedMem.detach();
qDebug() <<"Here shared";
}
QString text = QString::number(A); // A is Passed
QBuffer buffer;
buffer.open(QBuffer::ReadWrite);
QDataStream out(&buffer);
out << text;
int size1 = buffer.size();
if (!sharedMem.create(size1))
{
qDebug() << "Unable to create shared memory segment.";
return;
}
// Write into the shared memory
sharedMem.lock();
char *to = (char*)sharedMem.data();
const char *from = buffer.data().data();
memcpy(to, from, qMin(sharedMem.size(), size1));
sharedMem.unlock();
如果我传递所有5个变量,如何使用下面的程序检索这些变量。
该程序从共享内存中读取。
if (!sharedMem.attach())
{
ui->label->setText(tr("Unable to load!"));
return;
}
QBuffer buffer;
QDataStream in(&buffer);
QString text;
sharedMem.lock();
char* pointer = (char*)sharedMem.constData();
buffer.setData((char*)sharedMem.constData(), sharedMem.size());
buffer.open(QBuffer::ReadOnly);
in >> text; // Reading A
sharedMem.unlock();
// As this is the last process attached to the shared memory segment
// the shared memory segment is released, destroying its contents
sharedMem.detach();
编辑:
我尝试用QStringList中通过所有变量,但我收到错误。
仍然不是一个通用的解决方案。或者正在转换为QString的最佳解决方案? –