【问题标题】:Qt - Multiple Shared Memory spaces for multiple IPC apps?Qt - 多个 IPC 应用程序的多个共享内存空间?
【发布时间】:2011-05-01 06:29:29
【问题描述】:

我对 Qt 有点陌生,我正在尝试了解共享内存应用程序以及当您拥有多个使用共享内存但不应该交互的软件时会发生什么。

我正在查看这个基本演示/示例:http://doc.qt.io/qt-5/qtcore-ipc-sharedmemory-example.html

假设我开发软件应用程序 A 和软件应用程序 B。这两个应用程序都使用 Qt 的共享内存,并使用共享内存相互通信。

然后假设用户也在运行软件应用程序 X,该软件应用程序也碰巧将 Qt 的共享内存用于其他目的。软件应用 X 与应用 A 和应用 B 完全无关。

查看 Qt 共享内存的文档,我不明白您的应用程序如何使用共享内存,以区别于其他尝试使用共享内存的应用程序。是什么阻止了 App X 通过共享内存向 App A 和 App B 发送垃圾数​​据?

另外,关于上述示例的一个大问题是,对于 Qt 的共享内存演示,它们使用一个应用程序,您可以多次运行该应用程序,并且共享内存的事情发生在它们之间。您能否开发两个完全不同的软件,通过共享内存协同工作,还是仅限于一个打开多个实例的应用程序?

【问题讨论】:

    标签: qt shared-memory


    【解决方案1】:

    查看 Qt 的文档 共享内存,我不明白如何 您的应用程序使用的共享内存 以一种与众不同的方式 从其他应用程序试图 使用共享内存。

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

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

    或者函数setKey()

    void QSharedMemory::setKey ( const QString & key )

    但是,如果另一个应用程序使用了相同的密钥,或者您的密钥,您可能会遇到麻烦。因此,防止这种情况的一种方法是使用某种形式的混淆来生成您的密钥。

    另外,关于上述内容的一个大问题 例如,对于 Qt 的共享内存 演示,他们使用单个应用程序 你跑了不止一次并且 共享内存的事情发生在 他们。你能开发两个 完全不同的部分 通过 Shared 协同工作的软件 内存还是仅限于单个 具有多个的应用程序 实例打开了吗?

    共享内存的使用是在同一主机上的不同进程之间共享数据。因此,可能是同一应用程序的多个实例或知道或共享密钥的其他应用程序。

    【讨论】:

      猜你喜欢
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      相关资源
      最近更新 更多