Для создания дочернего процесса в pipe есть отличный пример в MSDN . Если ваш родительский процесс является консольным приложением, вы можете легко обработать стандартный вывод дочернего процесса следующим образом:
HANDLE my_own_pipe_read_handle = 0, my_own_pipe_write_handle = 0;
// create pipe
CreatePipe( &my_own_pipe_read_handle, &my_own_pipe_write_handle, NULL, 0 );
// create STARTUPINFO
STARTUPINFO siStartInfo;
ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
// fill in STARTUPINFO
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE);
siStartInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
siStartInfo.hStdInput = my_own_pipe_read_handle;
siStartInfo.dwFlags |= STARTF_USESTDHANDLES;
Мой вопрос: что я должен дать значениям hStdError
и hStdOutput
, когда хост-процесс является приложением Win32 (WinMain
) (поэтому он не имеет стандартного вывода и стандартной ошибки)? Как бы вы это сделали?
Наконец-то я решил свой проект по TCP / IP, большое спасибо за помощь. Текущее решение будущего проф. :)