Domanda

Sto cercando di usare CreateProcess per lanciare uno script PowerShell da dentro il mio applicazione.

ho usato l'esempio di Microsoft ( http: //msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx ) per creare il processo figlio e reindirizzare l'out di serie / in / err tubi.

L'unico problema rimasto da risolvere è il motivo per cui il processo figlio (PowerShell) non termina dopo l'esecuzione del comando.

Se eseguo il processo di PowerShell (con il comando) cmd.exe sua esecuzione ed esce, chiudendo il processo.

L'unico modo di chiudere il processo di PowerShell in questo momento è quello di eseguire TerminateProcess sulla maniglia, ma che si sente come ultima risorsa.

È stato utile?

Soluzione

È un genitore leggendo completamente stdout del bambino? Se non avete letto tutto allora credo che il bambino si bloccherà. Inoltre, se lo script si aspetta di ingresso che si dovrà scrivere qualcosa per stdin del bambino, altrimenti si bloccherà. Si potrebbe collegare WinDbg per il bambino e vedere dove è appeso; forse vi darà un'idea di dove andare a cercare.

Altri suggerimenti

In Linux, se non reindirizzare pienamente il processo padre di uscita e viene ucciso, il processo figlio viene ucciso anche. Così si controlla documentazione di Windows riferendosi riorganizzare del processo figlio quando il genitore viene ucciso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top