2

CreateProcess 関数を使用して C プログラムを介してバッチ コマンドを実行しています。GetExitCodeProcess 関数を使用して、プロセスの終了コードが STILL_ACTIVE 以外と等しいかどうかを確認することで、プロセスが終了したかどうかを確認します。これは、「cmd /c echo Hello World」などのコマンドでは正常に機能しますが、「cmd /c dir c:\windows」または「cmd /c dir c:\windows & exit」などのコマンドでは、cmd.exe は決して終了しません。どちらのコマンドも、コマンド プロンプトから起動すると、期待どおりに終了します。CreateProcess 経由で起動したときに終了しない理由を知っている人はいますか? どうもありがとう。

4

1 に答える 1

3

どうやら、ループ内の stdout/stderr パイプの読み取りを開始して、プロセスがまだ実行されているかどうかを確認し、プロセスが終了した後に読み取る必要があるようです。プロセスが終了した後にそれを読むのではなく。回答を投稿してくれた Wimmel に感謝します。

于 2012-12-15T19:38:30.043 に答える