CreateProcess, процесс не завершается при перенаправлении std out / in / err - PullRequest
1 голос
/ 01 февраля 2010

Я пытаюсь использовать CreateProcess для запуска скрипта powershell из моего приложения.

Я использовал пример Microsoft (http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx) для создания дочернего процесса и перенаправления стандартных каналов out / in / err.

Единственная проблема, которая остается решить, - это почемудочерний процесс (powershell) не завершается после выполнения команды.

Если я выполняю процесс powershell (с помощью команды) cmd.exe, он запускается и завершается, закрывая процесс.

единственный способ закрыть процесс powershell прямо сейчас - запустить TerminateProcess на дескрипторе, но это похоже на последнее средство.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2010

Ваш родитель полностью читает данные ребенка? Если вы не прочитаете все это, то я верю, что ребенок будет висеть. Кроме того, если сценарий ожидает ввода, вам нужно будет что-то записать в стандартный ввод ребенка, иначе он будет зависать. Вы можете прикрепить windbg к ребенку и посмотреть, где он висит; может быть, это даст вам представление о том, где искать.

0 голосов
/ 01 февраля 2010

В linux, если не полностью перенаправить вывод и родительский процесс уничтожен, дочерний процесс также будет уничтожен. Таким образом, вы проверяете документацию Windows, изменяющую порядок дочернего процесса, когда родитель убит.

...