我正在创建一个应用程序,它将使用 CreateProcess() 启动另一个进程。在父进程中,我将使用 GetExitCodeProcess() 检查进程是否处于活动状态。
这里 CreateProcess() 成功(返回一个非负值)但 GetExitCodeProcess() 返回 128(没有子进程等待)。我没有看到任何启动子进程的痕迹(通常是一些调试)。它间歇性地发生。
知道子进程到底发生了什么吗?我们从哪里获得更多信息(在系统/应用程序事件日志中?)。
请指导我。
谢谢,纳迦
我正在创建一个应用程序,它将使用 CreateProcess() 启动另一个进程。在父进程中,我将使用 GetExitCodeProcess() 检查进程是否处于活动状态。
这里 CreateProcess() 成功(返回一个非负值)但 GetExitCodeProcess() 返回 128(没有子进程等待)。我没有看到任何启动子进程的痕迹(通常是一些调试)。它间歇性地发生。
知道子进程到底发生了什么吗?我们从哪里获得更多信息(在系统/应用程序事件日志中?)。
请指导我。
谢谢,纳迦
感谢您的意见。
我发现以下 MSDN 文章给出了相同的症状和解决方案。
Cmd.exe、Perl.exe 或其他控制台模式应用程序可能无法正确初始化并在由使用 CreateProcess() 或 CreateProcessAsUser() API 的服务启动时提前终止。调用进程无法知道启动的控制台模式应用程序已提前终止。
在某些情况下,对失败的进程调用 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
谢谢,纳迦