Win32, ReadFile aus Pipe-Block, auch nachdem Child beendet wurde

Ich habe ein einfaches Programm (in C), das zwei untergeordnete Prozesse erstellt, auf jeweils eine geerbte Pipe wartet und die Ausgabe in eine Datei schreibt.

Alles funktioniert gut, außer dass nach einem Schreib- / Lesezyklus für die beiden Pipes, wenn das Kind endet, der Aufruf des ReadFile-Blocks auf Daten in der Pipes wartet. Ich benutze das folgende Muster:

...
//create pipe1
CreatePipe(&hReadDup,&hWrite,&saAttr,0);
DuplicateHandle(GetCurrentProcess(),hReadDup,GetCurrentProcess(),&hRead,0,FALSE,DUPLICATE_SAME_ACCESS);
CloseHandle(hReadDup);


si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdOutput = hWrite;   

CreateProcess(  NULL,
        const_cast<LPWSTR>(cmd2.c_str()), //the command to execute
        NULL,
        NULL,
        TRUE,
        0,
        NULL,
        NULL,
        &si, //si.
        &pi
    );

...
CloseHandle(hWrite); // EDIT: this was the operation not properly done!

while(cont){
    ...
    cont = ReadFile(hRead,buf,50, &actual,NULL);
    ...
}
... 

Der letzte Aufrufblock (nach dem Beenden des untergeordneten Prozesses). Idee warum (und wenn nicht, wie man dies debuggt)?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage