Win32APIで標準出力をリダイレクトする方法 Part2

前回の記事では、CreateProcessで呼び出したアプリの標準出力をファイルに落とす方法でした。
(前回っていったいいつの話だ^^)
今回は、呼び出したアプリで受け取る方法です。

詳細は、サンプルソース付きのMSDNを読んでいただくとしてポイントを少し説明します。
MSDN : コンソール プロセスを生成して標準ハンドルをリダイレクトする方法

・パイプを使用する
・パイプは必ず1方通行にすること
 DuplicateHandle APIを使用します。
 そのとき、必ず第4引数(lpTargetHandle)で得られる複製先ハンドルを呼び出されるプロセスへ継承すること
・入出力両方通信したい場合は、パイプが2つ必要
・CreatePipeするときに読み書き両方作成しますが、使用しないほうをあらかじめ閉じます。
 呼び出されるプロセスが終了すると勝手にパイプが破棄されるのですが、閉じてないとReadFileとWriteFileがブロックして帰ってこなくなります。

これくらいですかねぇ