私は無名パイプを使用して通信する2つの短いプログラムを作成しました。親プロセスは、子の標準IOハンドルを設定することにより、パイプハンドルを共有します。
// -- Set STARTUPINFO for the spawned process -------------------------
ZeroMemory(&m_ChildSI, sizeof(STARTUPINFO));
GetStartupInfo(&m_ChildSI);
m_ChildSI.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
m_ChildSI.wShowWindow = SW_HIDE;
m_ChildSI.hStdError = m_pipeChild.WritePipeHandle();
m_ChildSI.hStdOutput = m_pipeChild.WritePipeHandle();
m_ChildSI.hStdInput = m_pipeParent.ReadPipeHandle();
子は、 GetStdHandleの呼び出しで読み取りパイプハンドルを取得します。
hReadPipe = GetStdHandle(STD_INPUT_HANDLE)
私の質問は、パイプハンドルは、親と子が通信を終了すると、それらに対してCloseHandle ()を呼び出す親プロセスによって作成されます。
子供もCloseHandle()を呼び出す必要がありますか?これらは標準のIOハンドルであるため、プロセスが折りたたまれたときに自動的に割り当てが解除されると考えていました。
ありがとう!