CreateProcess返回非0但GetExitCodeProcess()返回128

时间:2011-09-08 06:54:47

标签: windows process createprocess exit-code

我正在创建一个使用CreateProcess()启动另一个进程的应用程序。在父进程中,我将使用GetExitCodeProcess()来检查进程是否处于活动状态。

这里CreateProcess()成功(返回非负值)但GetExitCodeProcess()返回128(没有要等待的子进程)。我没有看到任何启动子进程的痕迹(通常是一些调试)。它间歇性地发生。

知道儿童过程到底发生了什么?我们从哪里获得更多信息(在系统/应用程序事件日志中?)。

请指导我。

谢谢, 纳加

1 个答案:

答案 0 :(得分:0)

感谢您的评论。

我发现以下MSDN文章为问题提供了相同的症状和解决方案。


当使用CreateProcess()或CreateProcessAsUser()API由服务启动时,Cmd.exe,Perl.exe或其他控制台模式应用程序可能无法正确初始化并过早终止。调用进程无法知道启动的控制台模式应用程序是否过早终止。

在某些情况下,针对失败的进程调用GetExitCode()表示以下退出代码: 128L ERROR_WAIT_NO_CHILDREN - 没有要等待的子进程。


http://support.microsoft.com/kb/156484 http://support.microsoft.com/kb/142676/EN-US

http://support.microsoft.com/kb/175687/EN-US

谢谢, 纳加