1

CreateProcessを使用して、アプリケーション内からPowerShellスクリプトを起動しようとしています。

Microsoftの例(http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx)を使用して、子プロセスを作成し、標準のout / in/errパイプをリダイレクトしました。

解決しなければならない唯一の問題は、コマンドの実行後に子プロセス(PowerShell)が終了しない理由です。

(コマンドを使用して)PowerShellプロセスを実行すると、cmd.exeが実行されて終了し、プロセスが閉じます。

現在PowerShellプロセスを閉じる唯一の方法は、ハンドルでTerminateProcessを実行することですが、これは最後の手段のように感じます。

4

2 に答える 2

2

あなたの親は子供のstdoutを完全に読んでいますか?あなたがそれをすべて読まなければ、私は子供がぶら下がると信じています。また、スクリプトが入力を予期している場合は、子のstdinに何かを書き込む必要があります。そうしないと、ハングします。windbgを子供に取り付けて、どこにぶら下がっているのかを確認できます。多分それはあなたにどこを見るべきかについての考えを与えるでしょう。

于 2010-02-01T16:05:23.827 に答える
0

Linuxでは、出力を完全にリダイレクトせず、親プロセスが強制終了された場合、子プロセスも強制終了されます。したがって、親が殺されたときの子プロセスの再配置を参照しているWindowsのドキュメントを確認します。

于 2010-02-01T16:18:29.577 に答える