要在管道中创建子流程,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;
我的问题是:当主机进程是Win32(hStdError
)应用程序时,我应该给hStdOutput
和WinMain
值什么(所以它没有标准输出和标准错误)?你会怎么做?
最后我解决了我的TCP / IP项目,非常感谢您的帮助。目前的解决方案是未来的教授。 :)