CreateProcess возвращает не 0, но GetExitCodeProcess () возвращает 128 - PullRequest
0 голосов
/ 08 сентября 2011

Я создаю приложение, которое запускает другой процесс, используя CreateProcess (). И в родительском процессе я буду использовать GetExitCodeProcess (), чтобы проверить, активен ли процесс или нет.

Здесь CreateProcess () успешно (вернул неотрицательное значение), но GetExitCodeProcess () возвращает 128 (нет дочерних процессов для ожидания) Я не вижу никаких следов запуска дочернего процесса (обычно это отладки). Это происходит с перерывами.

Есть идеи, что на самом деле произошло с дочерним процессом? Где мы можем получить больше информации (в журналах событий системы / приложения?).

Пожалуйста, ведите меня.

Спасибо, Naga

1 Ответ

0 голосов
/ 09 сентября 2011

Спасибо за ваши комментарии.

Я нашел следующие статьи MSDN, в которых описаны те же симптомы и решение проблемы.


Cmd.exe, Perl.exe или другие приложения консольного режима могут не запускаться должным образом и преждевременно завершаться при запуске службой с помощью API-интерфейсов CreateProcess () или CreateProcessAsUser (). Вызывающий процесс не может знать, что запущенное приложение в режиме консоли преждевременно завершило работу.

В некоторых случаях вызов 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

Спасибо, Naga

...