如何连接两个程序(c ++,qt)

时间:2011-05-02 10:02:02

标签: c++ windows qt console ipc

我有2个节目。控制台和QT。控制台程序应该制作一些数据,而qt程序应该比显示这些数据。但这应该是单独的程序,我不知道如何告诉QT程序从我的控制台做什么。两个程序是本地的,Qt程序总是在运行(因此我不能每次都运行它),并且只在需要时才启动控制台。所以问题是 - 如何在控制台程序完成后在Qt中执行某些操作? 附:控制台程序生成一个Qt程序可以读取和显示的文件。 我正在使用Windows。

5 个答案:

答案 0 :(得分:3)

您可以考虑使用QFileSystemWatcher之类的内容来轮询特定目录中的更改,然后让控制台程序在那里写入文件。这样,当目录内容发生变化时,Qt程序会收到通知。

答案 1 :(得分:3)

Int Qt,您可以使用QProcess启动控制台进程。该类有一个finished信号,您可以将其连接到应用程序对象中的插槽。然后,当控制台进程完成时,finished信号将触发,并调用您的插槽函数。此时,您可以读取输出文件。

这比QFileSystemWatcher更有效,因为您直接观看相关事件(控制台程序完成)。

答案 2 :(得分:1)

进程间通信(IPC)是您正在寻找的解决方案。

MSDN文档可用here,其中包含有关在您的应用程序中实现此功能的更多详细信息,以及代码示例。

答案 3 :(得分:0)

这种技术称为“屏幕抓取”。您是通过将控制台应用程序的stdout连接到Qt应用程序输入来执行此操作。 看http://doc.qt.nokia.com/latest/qprocess.html

答案 4 :(得分:0)

看看QSharedMemory:http://doc.qt.nokia.com/4.7-snapshot/qsharedmemory.html。它允许线程间和进程间通信。

关于如何使用QSharedMemory的一个非常好的简短示例在这里:http://doc.trolltech.com/main-snapshot/ipc-sharedmemory.html