2017-02-22 5 views
-3

CreateProcessを使用して別のプログラムを実行する場合、stdoutをキャプチャするための推奨方法は何ですか?つまり、2番目のプログラムがstdoutに印刷したものを取り出し、最初のプログラムが解析できる配列で終わらせますか?CreateProcessとキャプチャstdout

どちらのプログラムも、Cで書かれたまっすぐなWin32プログラムです。

答えて

1

短い答えは、それに応じてSTARTUPINFO構造のhStdOut/hStdErrdwFlagメンバーを設定し、匿名のパイプを作成し、CreateProcess()がパイプの書き込み側のハンドルを継承することです。あなたのパイプの書き込みハンドルを閉じることを忘れないでください。パイプの読み込みハンドルから、ERROR_BROKEN_PIPEエラーで失敗するまでループ内で読むことができます。

MSDNは、このの詳細な例を提供します。

Creating a Child Process with Redirected Input and Output

あなたがこれを行うには、最初の人ではありません、そこのコード例の多くなるとStackOverflowの上ここに質問を複製する必要があります。

関連する問題