QT共享内存读取数据失败
读取共享内存里的数据,buffer一直为空,使用别人的程序读取成功,说明共享内存创建是没有问题的。读取不成功的代码如下,请各位大神帮帮忙看看,问题在哪。快急死人了。
sharedMemory.setKey(QString("test"));
bool res = sharedMemory.attach();
if (res)
{
qDebug() << sharedMemory.errorString();
QBuffer buffer;
QDataStream in(&buffer);
QString text;
char ch;
sharedMemory.lock();
buffer.setData((const char*)sharedMemory.constData(), sharedMemory.size());
buffer.open(QIODevice::ReadOnly);
in >> text;
sharedMemory.unlock();
sharedMemory.detach();
}
sharedMemory.setKey(QString("test"));
bool res = sharedMemory.attach();
if (res)
{
qDebug() << sharedMemory.errorString();
QBuffer buffer;
QDataStream in(&buffer);
QString text;
char ch;
sharedMemory.lock();
buffer.setData((const char*)sharedMemory.constData(), sharedMemory.size());
buffer.open(QIODevice::ReadOnly);
in >> text;
sharedMemory.unlock();
sharedMemory.detach();
}
...全文
相关推荐
Qt进程间共享内存区例子
**连接信号与槽**:为了处理共享内存的创建和连接失败,可以设置信号和槽函数。3.
【Qt】进程间通信之QSharedMemory程序.rar
写端负责创建共享内存并写入数据,而读端则连接到这个内存并读取数据。以下是一些基本步骤的概述:1.
QSharedMemory使用例子
`data`是我们要写入的数据,`memcpy`函数将其复制到共享内存中。读程序则会在自己的进程中查找相同的共享内存键。如果找到,它可以在子线程中持续读取数据。
1TestShareMemrory.rar
- 服务端通常会先尝试创建共享内存,若成功则写入数据;若失败,可能是内存已被创建,此时可以作为客户端连接并读取数据。 - 客户端在连接共享内存后,检查内存状态,读取数据或写入新数据。
QShareMemory示例.zip
从共享内存中读取数据,通常是一个二进制流。4. 将二进制流还原为图片格式,并显示在界面上。这可能需要用到QImage或QPixmap等Qt图像处理类。


