DuplicateHandle

DuplicateHandleは、ハンドルを複製する。

DuplicateHandle function (handleapi.h) - Win32 apps | Microsoft Docs

同じ入出力先のハンドルを複製して、子プロセスに使ってもらう。
今回は、pingコマンドを子プロセスで実行してもらうのだが、ping.logへの出力を複製して、そこに出力を書いてもらう。

ping.logのハンドルhFile、複製した出力ハンドルhStdOutを表示。
"ping yahoo.co.jp"というコマンドを子プロセス実行してもらい、出力をping.logに残す。

ping.logのもともとのハンドル
ping.logのもともとのハンドル

ping.logのもともとのハンドル。

複製したハンドル
複製したハンドル

複製したハンドル。

WaitForSingleObjectで待っていて終わるとこれを出す。
WaitForSingleObjectで待っていて終わるとこれを出す。

WaitForSingleObjectで待っていて終わるとこれを出す。

確かにping.logが出力されている。
確かにping.logが出力されている。

確かにping.logが出力されている。

pingコマンドの出力が書かれている。
pingコマンドの出力が書かれている。

pingコマンドの出力が書かれている。

Sample/winapi/DuplicateHandle/DuplicateHandle/src/DuplicateHandle at master · bg1bgst333/Sample · GitHub