CreateProcess, процесс не прекращается при перенаправлении std out / in / err

StackOverflow https://stackoverflow.com/questions/2175665

  •  24-09-2019
  •  | 
  •  

Вопрос

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

Я использовал пример Microsoft (http://msdn.microsoft.com/en-us/library/ms682499À(vs.85).aspx.) Чтобы создать детский процесс и перенаправить стандартные трубы OUT / IN / ERR.

Единственным вопросом, оставленным для решения, поэтому дочерний процесс (PowerShell) не ограничивается после выполнения команды.

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

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

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top