跨两个不同进程的 QSharedMemory

Posted

技术标签:

【中文标题】跨两个不同进程的 QSharedMemory【英文标题】:QSharedMemory across two different processes 【发布时间】:2013-01-28 15:39:30 【问题描述】:

我想在两个不同的 Qt 应用程序之间共享一个变量。我正在考虑为此目的使用 QSharedMemory。我面临的问题是识别 Qt 应用程序中的共享内存区域。如何确保两个应用程序使用相同的共享内存?

【问题讨论】:

【参考方案1】:

共享内存区域由一个键标识——一个传递给constructor的字符串参数,或者稍后使用setKey设置。

您需要生成一个密钥并将其值传递给两个应用程序;使用它,它们都将访问相同的共享内存。

【讨论】:

使用纯 QString 是否可以达到目的? @saurabhsood91:字符串可以是任何你喜欢的字符串,只要 (a) 两个应用程序都被赋予相同的密钥,并且 (b) 它不会与任何其他应用程序使用的密钥冲突.【参考方案2】:

除了 Mike Seymour 已经说过的 Qt 有很多示例代码(很可能也在您的系统上),所以您可以查看 example 和 documentation

【讨论】:

以上是关于跨两个不同进程的 QSharedMemory的主要内容,如果未能解决你的问题,请参考以下文章

Qt进程间通信之QSharedMemory示例

带有 QSharedMemory 的 IPC 和如果进程之一挂起的风险

利用QSystemSemaphore和QSharedMemory实现进程间通讯

QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开

如何更改 QSharedMemory 的大小

QtQt之进程间通信(共享内存)转