首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSharedMemory::handle不存在错误

QSharedMemory::handle不存在错误
EN

Stack Overflow用户
提问于 2012-10-15 13:44:59
回答 1查看 862关注 0票数 1

我正在尝试运行以下QT代码:

代码语言:javascript
复制
#include <QtCore/QCoreApplication>
#include <QSharedMemory>
#include <QDebug>
QSharedMemory g_objSharedMemory(QString("Shared Memory"));

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    if(g_objSharedMemory.isAttached()==false)
    {
        qDebug()<<"Shared memory is not attached !!!!trying to attach it\n ";
        qDebug()<<g_objSharedMemory.errorString();
        if(g_objSharedMemory.attach()==false)
        {
            qDebug()<<"Failed to attach shared memory to the process!!!!";
            qDebug()<<g_objSharedMemory.errorString();
            return 0;
        }
    }

    return a.exec();
}

我未能将共享内存段附加到进程。我是在windows XP上编译这段代码的。

我收到QSharedMemory::handle doesnt exist错误。

如何修复此错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 13:58:25

您需要在使用共享内存段的某个进程中创建()共享内存段。最有可能的是,您有一个“主”或“服务器”进程是首先启动的-让此进程创建具有特定大小的共享内存:

代码语言:javascript
复制
qDebug()<<"Creating shared memory ...";
if(g_objSharedMemory.create(42) == false) {
    qDebug() << "Failed to create shared memory!!!!";
    qDebug() << g_objSharedMemory.errorString();
}

然后,在您的“从”或“客户端”进程中,您应该能够使用相同的密钥附加到共享内存。

请注意,create()也附加了进程,因此您不能在主进程中调用attach()。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12889918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档