如何处理C ++重定向进程的输出

时间:2016-01-09 17:40:39

标签: c++ redirect process

我正在研究C ++应用程序,但遇到了问题。

以下是我的申请的简要说明: 有两个过程可以协同工作。主要过程(应用程序A)调用第二个(应用程序B),它是第一个孩子。

应用程序A:主要应用程序:带有QT界面和进度条的C ++应用程序。它使用CreateProcess调用另一个进程。

应用程序B:C ++可执行文件。这个exe在stdout上生成输出消息,如:
进度1%
进展20%
...
进展100%

我想做什么: 我想用应用程序A启动应用程序B.我的意思是当我启动整个应用程序时,应用程序A运行并创建另一个启动应用程序B的进程。我想捕获B的输出并更新进度条申请A. 我已经实现了本文中解释的重定向系统:
https://support.microsoft.com/en-us/kb/190351

它可以工作,但问题是当exe终止时而不是在执行期间处理B的输出消息。 我想在执行期间处理B的输出消息。我正在考虑使用重定向系统使用命名管道。 你怎么看?有什么建议?任何想法?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

也许进程B的输出是缓冲的,只有在应用程序完成后才会刷新。您可以在每个输出上显式flush()输出流,看看它是否有帮助。