首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt - QSharedMemory qipc文件位置

Qt - QSharedMemory qipc文件位置
EN

Stack Overflow用户
提问于 2019-05-22 18:19:14
回答 1查看 103关注 0票数 0

在Linux上,Qt在使用QSharedMemory时会在/tmp目录中创建以下文件

代码语言:javascript
复制
qipc_sharedmemory_mysharedmem5ffa537fd8798875c98e190df289da7e047c05
qipc_systemsem_mysharedmem5ffa537fd8798875c98e190df289da7e047c05

我遇到一个问题,同一软件的两个不同版本对这些文件使用两个不同的位置,使它们不兼容。“较新”的版本会在/tmp/username/目录中创建这些文件。我似乎想不出这是什么原因。这个位置是由Qt本身定义的吗?如果是这样,它在不同版本之间是否会发生变化?或者它可以由用户以某种方式配置,如果是,在哪里以及如何配置?

EN

回答 1

Stack Overflow用户

发布于 2019-05-22 19:17:57

我认为您正在经历一个已知的Qt错误,正如官方错误跟踪器中所报告的那样:https://bugreports.qt.io/browse/QTBUG-60771

简而言之,在Qt5.6和Qt5.8之间,QSystemSemaphore ( QSharedMemory)使用的)创建其密钥的方式发生了变化。发现用于创建密钥的方法可能会导致冲突。

Qt 5.9的changelog中记录了不兼容性:https://code.qt.io/cgit/qt/qtbase.git/tree/dist/changes-5.9.0/?h=v5.9.0

代码语言:javascript
复制
[QTBUG-60771] Reverted a change that caused Qt 5.6 through 5.8 not to
   connect to QSystemSemaphore and QSharedMemory created by running
   applications using Qt earlier than 5.6. Unfortunately, this means that Qt
   5.9 will not connect to 5.6-5.8.

您可以尝试使用QSharedMemory::setNativeKey()方法来强制使用您自己的密钥(以及/tmp目录中的文件名)。尽管这意味着您应该修改并重新编译软件的两个版本。

我担心“官方”的解决方案是确保你一次只使用一个版本的Qt。

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

https://stackoverflow.com/questions/56254572

复制
相关文章

相似问题

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