Qt 和 C/C++ 之间的 IPC

Posted

技术标签:

【中文标题】Qt 和 C/C++ 之间的 IPC【英文标题】:IPC between Qt and C/C++ 【发布时间】:2013-02-07 11:03:17 【问题描述】:

我需要在两个进程之间发送/接收数据。其中之一将使用 Qt(4 或 5)。 该进程将一直运行(如后台进程)。

另一个进程将被启动,然后它应该能够发送argv 到 首先处理并从中接收一些answer

第二个进程必须尽快启动,因此使用 QtCore 是最后的资源。这意味着我需要它尽可能小和快,所以我需要使用普通的 没有任何外部库的 C/C++。

有什么想法可以做到吗?

如果这不可能,我将不得不在第二个过程中使用 QtCore。你知道多少钱 慢是因为 QtCore 与普通 C/C++ 相比吗? (就启动时间而言)。

问候

编辑:

我不能使用 QBus,因为它必须兼容 Mac/Linux/Windows。

【问题讨论】:

为什么不把 Qt 进程写成一个传统的服务器,让它监听任何客户端都可以连接的端口呢?在没有“外部库”的情况下,C 或 C++ 中没有很好的跨平台 IPC 机制,但是如果您只需要快速的网络支持而不需要为每个平台定制代码,那么像 libcurl 之类的东西比 Qt 轻得多。跨度> @deong 你的意思是使用 QSocket 然后读取/写入/读取它? @cmannett85 不,没有 Boost。它和 QtCore 一样重 是的,您可以在服务器上使用 QSocket。在客户端上,任何向/从套接字写入和读取的方式都可以正常工作。此外,@cmannett85,Boost 在运行时通常很轻。 @deong 我没有建议它不是。我只是想了解更多关于 OP 应用程序的信息。 【参考方案1】:

如果它需要完全跨平台兼容,您最好的选择可能是命名套接字/命名管道,它们应该适用于每个平台。 Should take you to the information you need 用于套接字设置。在纯 C++ 应用程序中仍然需要一些网络处理代码,但它的开销应该比 Qt-Core 和 Qt-Network 少得多。

您也可以使用共享内存来执行此操作,但为了简单起见,我更喜欢套接字方法。

【讨论】:

我想我会选择套接字。谢谢你:)

以上是关于Qt 和 C/C++ 之间的 IPC的主要内容,如果未能解决你的问题,请参考以下文章

Qt--信号与槽机制

编程方面,语言用 C/C++,想做个界面,不想用 MFC,除 了QT,还有啥好的做界面的方法吗?

qt 只能写c++程序吗,不能写c语言的程序吗,要写c只能用 gtk吗?

如何在原生 C/C++ 中使用 Qt 绘制二维码

C/C++ Qt 基础通用组件应用

C/C++ Qt 监控文件状态变化