Pergunta

Estou tentando usar o CreateProcess para iniciar um script PowerShell de dentro do meu aplicativo.

Eu usei o exemplo da Microsoft (http://msdn.microsoft.com/en-us/library/ms682499(vs.85).aspx) para criar o processo filho e redirecionar os tubos padrão out/in/err.

A única questão que resta a resolver é por que o processo filho (PowerShell) não termina após a execução do comando.

Se eu executar o processo PowerShell (com o comando) cmd.exe, ele executa e sai, fechando o processo.

A única maneira de fechar o processo do PowerShell agora é executar o TerminEmProcess na alça, mas isso parece um último recurso.

Foi útil?

Solução

Seus pais estão lendo completamente o stdout do filho? Se você não ler tudo, acredito que a criança ficará pendurada. Além disso, se o script esperar a entrada, você precisará escrever algo para o stdin da criança, ou então ele ficará. Você pode prender o Windbg à criança e ver onde está pendurado; Talvez isso lhe dê uma idéia de onde procurar.

Outras dicas

No Linux, se não redirecionar completamente a saída e o processo pai é morto, o processo infantil também é morto. Então, você verifica a documentação do Windows, que consulte a rearranjo do processo filho quando o pai for morto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top