2011-09-08 79 views
0

我正在創建一個將使用CreateProcess()啓動另一個進程的應用程序。在父進程中,我將使用GetExitCodeProcess()來檢查進程是否處於活動狀態。CreateProcess返回非0,但GetExitCodeProcess()返回128

這裏CreateProcess()成功(返回一個非負值),但GetExitCodeProcess()返回128(沒有子進程要等待)。我沒有看到任何啓動的子進程的痕跡(通常是一些調試)。它會間歇性地發生。

不知道孩子過程真的發生了什麼嗎?我們在哪裏獲得更多信息(在系統/應用程序事件日誌中?)。

請指導我。

感謝, 娜迦

+0

爲[GetExitCodeProcess]的文檔(HTTP ://msdn.microsoft.com/en-us/library/ms683189(v = vs.85).aspx)往往表明,其他259的任何值都將是程序特定的。 (假設'GetExitCodeProcess'成功) –

+0

錯誤檢查代碼很少得到測試。或者當你不讓任何人看它時進行審查。 –

+0

失敗時,CreateProcess返回零,而不是負數。 –

回答

0

感謝您的意見。

我發現下面的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

謝謝, 納加

+0

這些文章適用於Windows NT 4,它們不太可能與您的問題有關。 –