Мы не можем выяснить, как Visual Studio реализует эту логику.
Чтобы решить вашу проблему, предотвратить блокировку родительского процесса и распечатать вывод дочернего процесса, вы можете проверить размер чтения, возвращенный из ReadFile
в родительском процессе, чтобы принять решение продолжить или остановить чтение, если вы можетене контролируй дочерний процесс.
for (;;)
{
bSuccess = ReadFile(g_hChildStd_OUT_Rd, chBuf, BUFSIZE, &dwRead, NULL);
if (!bSuccess || dwRead == 0) break;
bSuccess = WriteFile(hParentStdOut, chBuf,
dwRead, &dwWritten, NULL);
if (!bSuccess) break;
// Check if there is more data to read, if not break.
if (dwRead < BUFSIZE)
break;
}