継承したWin32パイプコードの問題を追跡しようとしています。これは、x2とそれに続くx2の古いスタンバイです。CreatePipe()
DuplicateHandle()
CreateProcess()
if (!CreatePipe(&child_stdout_read, &parent_write, &security, 0) ||
!DuplicateHandle(GetCurrentProcess(), parent_write,
GetCurrentProcess(), &child_stdout_write, 0, TRUE,
DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE)) {
throw std::system_error(GetLastError(), std::system_category());
}
私が混乱しているのは、呼び出しDUPLICATE_CLOSE_SOURCE
で使用されているフラグです。DuplicateHandle()
Microsoftのドキュメントによると、これは、複製後にソースハンドルが閉じられることを意味します。
(パイプへの)ハンドルのコピーを同じプロセスに作成し、元のハンドルを閉じることのポイントは正確には何でしょうか?オリジナルだけを使ってみませんか?