2

我正在通过带有 CreateProcess 函数的 C 程序执行批处理命令。我通过检查进程退出代码是否等于除 STILL_ACTIVE 之外的任何值来检查进程是否已使用 GetExitCodeProcess 函数终止。这适用于“cmd /c echo Hello World”等命令,但对于“cmd /c dir c:\windows”或“cmd /c dir c:\windows & exit”等命令,cmd.exe 将永远不会终止。通过命令提示符启动的任一命令都将按预期终止。有谁知道为什么它在通过 CreateProcess 启动时永远不会终止?非常感谢。

4

1 回答 1

3

显然,我必须开始读取循环中的 stdout/stderr 管道,该管道检查进程是否仍在运行,并在进程终止后读取它。而不是在进程终止后阅读它。非常感谢 Wimmel 发布答案。

于 2012-12-15T19:38:30.043 回答