我正在使用CreateProcess函数通过C程序执行批处理命令。我通过检查进程退出代码是否等于除STILL_ACTIVE之外的任何内容来检查进程是否已使用GetExitCodeProcess函数终止。这适用于像" cmd / c echo Hello World"这样的命令,但对于像" cmd / c dir c:\ windows"这样的命令。或" cmd / c目录c:\ windows&退出",cmd.exe永远不会终止。通过命令提示符启动时的任一命令都将按预期终止。有没有人知道为什么它通过CreateProcess启动时永远不会终止?非常感谢。
答案 0 :(得分:1)
显然我必须开始读取循环中的stdout / stderr管道,它检查进程是否仍在运行,以及在进程终止后读取它。而不是仅在过程终止后才读取它。非常感谢Wimmel发布答案。