在 c 程序和 C++ Qt 应用程序之间使用啥 Linux IPC?

Posted

技术标签:

【中文标题】在 c 程序和 C++ Qt 应用程序之间使用啥 Linux IPC?【英文标题】:What Linux IPC to use between a c program and a C++ Qt app?在 c 程序和 C++ Qt 应用程序之间使用什么 Linux IPC? 【发布时间】:2010-10-04 09:11:46 【问题描述】:

我时不时有一个老式的 c 程序 需要告诉基于 C++ Qt 的应用程序我的系统上发生的一些“事件”。

但是当我开始处理这个问题时,我注意到一些 ipc 技术在 c 程序中很容易使用。 然后我们有一些在“Qt 世界”中运行良好的特定于 Qt 的样式, 但是它们在 ansi c 程序中不能很好地工作。

对于在 Qt C++ 和 c 程序中运行良好且易于使用的 ipc 技术,您有什么建议吗?

谢谢 约翰

【问题讨论】:

【参考方案1】:

如果您熟悉网络编程,Unix 域套接字也应该很容易。它们的工作方式有点像双向命名管道,Qt 中的网络 API 应该可以轻松接收作为网络消息传递的“事件”。

【讨论】:

【参考方案2】:

named pipes 呢?您可以像对常规文件一样对它们进行操作(当然,创建有点不同),我敢打赌旧的 ANSI C 程序和新的 Qt C++ 程序都可以对文件进行操作。

【讨论】:

我一直在考虑使用命名管道,如果需要,也许可以帮助 inotify。【参考方案3】:

如果事件通知非常简单,那么您可以使用signals。

如果通知对外部来源有用,那么D-Bus 是一个选项。

【讨论】:

Unix 信号在 c 程序中很容易使用,但在 Qt 世界中,它们开始有点混乱......正如您的示例所示。它们并没有真正融入“Qt 世界”。 约翰是正确的。 Unix 信号和 Qt 不是很好的匹配。 D-Bus 需要在 C 中进行大量设置。本地套接字或命名管道是更好的选择。 顺便说一句,我试图让那个 unix 信号示例运行......但它根本不工作(奇怪,因为大多数 Qt 示例通常运行得很好......)你试过吗?让那个例子运行起来?

以上是关于在 c 程序和 C++ Qt 应用程序之间使用啥 Linux IPC?的主要内容,如果未能解决你的问题,请参考以下文章

QT上可以支持些啥语言开发程序?

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

C++和VisualC++有啥区别?

java/spring 和 c++/qt 应用程序与 websockets 之间的通信

QT是啥软件啊?

qt是啥软件