2016-01-09 50 views
1

我正在研究C++應用程序,並遇到一個問題。如何處理C++重定向進程的輸出

查看下面我的應用程序的簡要說明: 有兩個過程一起工作。主進程(應用程序A)調用第一個子進程的第二個進程(應用程序B)。

應用程序A:主要應用程序:帶有QT接口和進度條的C++應用程序。它使用CreateProcess調用另一個進程。

應用程序B:C++可執行文件。此exe在標準輸出上生成一個像輸出消息:
進展1%
PROGRESS 20%
...
PROGRESS 100%

我想這樣做: 我想啓動應用程序B與應用程序答:我的意思是當我啓動整個應用程序時,應用程序A運行並創建啓動應用程序B的另一個進程。我想要捕獲B的輸出並更新應用程序A的進度欄。 我已經實現了重定向系統解釋這篇文章:
https://support.microsoft.com/en-us/kb/190351

它可以工作,但問題是B的輸出消息在exe被終止時處理,而不是在執行過程中處理。 我想在執行過程中處理B的輸出消息。我正在考慮使用使用命名管道的重定向系統。 你覺得呢?有什麼建議?任何想法 ?

預先感謝您。

回答

1

也許過程B的輸出緩衝,只有在應用程序結束後才刷新。你可以在每個輸出上顯式輸出數據流,看看它是否有幫助。

+0

我猜測輸出僅以CR終止(\ r)。 –

+0

是輸出以CR結束。我應該在孩子的每條輸出消息之後使用flush()嗎? – FreerideProgrammer