我從Win32的使用CreateProcess
產卵的處理,設定STARTUPINFO
的hStdOutput
和hStdError
性質管禁用緩衝處理與CreatePipe
創建。我有兩個線程正在讀取管道,等待數據變爲可用(或者需要完成的過程,此時它會檢查在終止線程之前沒有剩下數據)。
隨着數據變得可用,我將輸出寫入有效的大文本框。上重定向標準輸出管(Win32 API的,C++)
發生什麼事是輸出被緩衝,所以緩慢運行的過程只是獲取文本框中的大量數據,而不是「正好發生」。
我不確定它是做緩衝的管道,還是與重定向有關的東西。
是否有任何方法將管道設置爲無緩衝區,或者以儘可能快地發送標準輸出的方式啓動進程?
我正在與一個測試應用程序,打印線相隔一秒
Here is line one
(waits one second)
Here is line two
(waits one second)
... etc
流程在寫入控制檯時流暢嗎?在linux上,這是一個相當知名的問題,解決方案是分配一個僞tty,因爲當輸出不是tty時某些程序會激活緩衝。在Windows上,檢查stdout的文件類型並不常見,所以我不希望緩衝區進入管道和控制檯。 – 2010-08-02 06:19:14
是的,當它在控制檯(即。cmd.exe)上時,它按照預期流出,具有延遲等。 – 2010-08-02 06:28:56
過程如何寫入標準輸出?我想你可能會打開C或C++流緩衝。 – wilx 2010-08-02 08:08:27