2012-12-13 29 views
1

我正在使用CreateProcess函數通過C程序執行批處理命令。我通過檢查進程退出代碼是否等於除STILL_ACTIVE之外的任何其他參數來檢查進程是否已使用GetExitCodeProcess函數終止。這適用於像「cmd/c echo Hello World」這樣的命令,但對於像「cmd/c dir c:\ windows」或「cmd/c dir c:\ windows & exit」這樣的命令,cmd.exe永遠不會終止。通過命令提示符啓動時的任一命令將按預期終止。有誰知道爲什麼它通過CreateProcess啓動時永不終止?非常感謝。使用CreateProcess函數啓動時,cmd.exe在某些情況下不會終止

+0

你是否在逃避反斜槓? '\\' –

+0

它從SQL數據庫中提取命令,並且數據庫內的命令是有效的。這不是一個逃避問題。經過一些更多的測試後,如果有超過1頁的輸出,這似乎只是一個問題。 「cmd/c dir c:\」和「cmd/c dir c:\ test」可以正常工作,但是「cmd/c dir c:\ windows」不能。我不知道爲什麼所有的仇恨和反對票。 – Matt

+1

我錯了,這是由於直接內容的數量,但我不確定確切的金額。在c:\ test中有30多個目錄,它有120多個目錄,它永遠不會再退出 – Matt

回答

1

顯然我必須開始讀取循環中的stdout/stderr管道,它檢查進程是否仍在運行,並在進程終止後讀取它。而不是在流程終止後纔讀取它。非常感謝Wimmel發佈答案。

相關問題