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的最佳解決方案? –