2011-05-01 89 views
0

我对Qt有点新,我想了解共享内存应用程序,当你有多个使用共享内存但不应该交互的软件时会发生什么。Qt - 用于多个IPC应用程序的多个共享内存空间?

我期待在这个基本的演示/例子:http://doc.qt.io/qt-5/qtcore-ipc-sharedmemory-example.html

可以说,我开发的软件应用程序A和应用软件B.这两个应用程序使用Qt的共享内存,并作出使用共享内存海誓山盟沟通。

然后让说,用户也正在运行的软件应用X,恰巧也使用Qt的共享内存用于其他目的。软件应用程序X与应用程序A和应用程序B完全不相关。

查看Qt共享内存的文档,我不明白您的应用程序如何使用共享内存来区别于其他尝试使用Shared的应用程序记忆。什么使App X通过共享内存将垃圾数据发送到App A和App B?

此外,关于上述例子中的一个大问题是,Qt的共享内存的演示,他们使用您多次运行以及它们之间的共享内存的事情发生较为单一的应用程序。您是否能够开发两种完全不同的软件,它们通过共享内存一起工作,还是仅限于具有多个实例打开的单个应用程序?

回答

1

综观对Qt的 共享内存的文件,我不知道如何 应用程序中使用的共享内存 在区分自己 从试图 使用共享内存的其他应用程序的方式。

您使用您的应用程序共享的密钥。因此,可以通过constructor设置:

QSharedMemory::QSharedMemory (const QString & key, QObject * parent = 0)

或者功能setKey()

void QSharedMemory::setKey (const QString & key)

但是,如果另一个应用程序中使用相同的密钥,或猜测你的钥匙,你可以有麻烦。因此,防止这种情况的一种方式是生成密钥的某种形式的混淆。

此外,关于上述 例如,一个大问题是,Qt的共享内存 演示,他们使用一个单一的应用 您运行不止一次和 之间的 共享内存的事情发生他们。您是否能够开发两个 完全不同的 软件,这些软件可以通过Shared共同工作 内存或者是否仅限于一个具有多个 实例的单个 应用程序?

使用共享存储器是共享相同主机单独的进程之间的数据。因此,它可能是知道或共享密钥的相同应用程序或其他应用程序的多个实例。

相关问题