问题标签 [qsharedmemory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 观察 QSharedMemory 的变化
我有一个QSharedMemory来防止我的应用程序的两个进程同时运行。进程 A 在启动时将 QSharedMemory 设置为“锁定”。现在我的流程 B 设置了一个值,例如“请回到前台”。
进程 A 是否有一种简单的方法可以观察 QSharedMemory 的变化,即避免实现愚蠢的拉动计时器?
c++ - 使用 QSharedMemory 传递结构
我是QT的新手。我已经看到 QT 为共享内存提供的基本示例,但我想使用共享内存共享结构。我怎样才能实现它?
在接收函数中,我在缓冲区中正确获取数据,但我无法将其转换为可验证的 Struct。
c++ - 在 QSharedMemory 中存储数据
我正在尝试在共享内存中存储四个“双”变量和一个“整数”变量。
QSharedMemory::data()
提供一个指向用 . 预留的内存的指针create(int size)
。我的问题是:我怎样才能适当地将数据加入并深度复制到共享内存中,以便我可以访问另一个程序上的任何元素以进行读/写?
我看到的唯一类似的事情是将值放在QString
. 那是正确的方法吗?
谢谢。
c++ - Qt C++ 自定义类,用于使用 QSharedMemory 在多个应用程序上复制和粘贴
QT C++ 我可以使用自定义 mime 类型在多个应用程序上进行复制和粘贴吗?
在我问了这个问题之后,我尝试使用 QSharedMemory 制作一个应用程序。
但是当我尝试在 A 和 A' 之间复制和粘贴时
发生无法读取内存。(在单个应用程序中,它完美地工作)
下面是我的结果和代码。
我的自定义课程
复制功能
粘贴功能
如何使用 QSharedMemory 和包含 vector 的自定义类在多个应用程序上复制和粘贴?
c++ - Qt QSharedMemory 和 QDataStream
我想使用 QSharedMemory 制作共享内存。所以,我正在尝试使用 QDataStream 读/写我的自定义类。但我不知道如何覆盖双指针(float **)。
(我使用双指针的原因是因为opencv cv::Mat,如果有比我想要的更好的方法,请推荐)
和 cpp 文件:
c++ - 使用 QSharedMemory 附加现有的共享内存
在应用程序 1(C 代码)中,我创建了一个这样的共享内存:
在应用程序 2(QT)中,我想访问这个 SharedMemory
附加失败“QSharedMemory::attach (shmget): 不存在”“16858191”“/tmp/qipc_sharedmemory_24384b85e5d54b23bd4f84f14de71b10d4801666”
所以我尝试了以下
附加失败“QSharedMemory::attach (shmget): 不存在”“”“/tmp/shmem_prot”
我认为问题在于 unix_key 未设置,因此 attach() 中的 shmget 将失败。handle() 是私有的,所以我不能调用这个函数来设置 unix_key。
是否可以在不知道共享内存大小/调用 create() 的情况下访问共享内存?
当我尝试调用 create()
将创建一个新的共享内存...
我究竟做错了什么?提前致谢。
c++ - QSharedMemory 不会在应用程序崩溃时被删除
我正在使用Qt C++
我用来QSharedMemory
限制应用程序的多个实例的地方来实现一个应用程序。中的相关代码段main.cpp
如下,
打开应用程序时,我可以看到已为我的应用程序创建了共享内存。( shmid
7045192, size
1B)
到目前为止,一切都很好。当我的应用程序由于某种原因崩溃时,就会出现问题。崩溃时,sharedMemory 没有被清除,所以我无法再打开应用程序。当它崩溃时,附加的应用程序计数变为 0,但共享内存不会被删除。相关截图如下
据我了解,由于共享内存的状态没有dest
像其他共享内存一样被标记,所以即使没有任何附加进程,它也不会被删除。
所以,我的问题是有没有办法将共享内存的状态标记为dest
?
c++ - C++/Qt memcpy 与 QSharedMemory 崩溃
我有一个简单的函数,它使用 Qt 的 (5.5.1) QSharedMemory 类将字符串(uri 链接或文件路径)发送到已经运行的应用程序实例。
它似乎在大多数情况下都能正常工作,但我从用户那里捕获了一个崩溃日志,它在 memcpy 上崩溃了。该函数如下所示:
m_SharedMemory 是类的 QSharedMemory 类型的静态成员。
从日志中,我看到我尝试发送的字符串是一个简单的文件路径,没有特殊字符,而且不太长,只有 150 个字符。
有什么问题,但是我无法用类似的参数重现它?
qt - 使用共享内存序列化信号/槽 QObjects
我有两个Qt
应用程序共享一个内存段。
我希望能够从 App2 发出信号并从 App1 触发插槽。首先,我需要使用QObject::connect()
将 App2 信号链接到 App1 插槽。
有没有连接两个不同Qt
进程信号/插槽机制的好方法?我偶然发现了qt-remote-signals库来发送远程信号,它QDataStream
用于序列化对象。QSharedMemory
使用相同的类。
还是我应该忘记连接任何东西而只是模拟信号/插槽行为?
- 从 App2 写入内存段
- 每当它从 App1 更改时读取该段(如何知道它何时更新?)
- 从 App1 发出自定义信号
- 从 App1 触发一个插槽
这听起来现实吗?我是共享内存的新手。
python - 将列表从 QSharedMemory 复制到 sip.voidptr 的 Pythonic 方式
我正在使用 PyQT5 和 QSharedMemory 类。我正在创建一个可以容纳 6 个 1 字节元素的共享内存。要将这些元素复制到共享内存数组中,我将循环访问 python 列表中的元素,如下所示:
这似乎非常不合 Python 和样板代码。我想知道是否有更合适的方法来实现相同的结果?
使用时
或者:
它将失败并显示错误消息:
用于重现的整个测试代码如下所示: