用CreateProcess执行一个dos程式序,若使用管道操作会出现无法输出信息在dos窗口的问题
代码如下:
执行时只会出现一个dos窗口,但dir的内容却不出显示出来,
我的目的是要进行管道操作,但dos窗口执行的内容也要show出来.
经调试发现只是这个参数的问题STARTF_USESTDHANDLES,如将其去掉即可以显示出来,该如何解决呢?
STARTUPINFO si;
::ZeroMemory(&si,sizeof(si));
si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
si.wShowWindow = SW_SHOW;
si.hStdInput=hReadPipe2;
si.hStdOutput=si.hStdError=hWritePipe1;
si.cb=sizeof(si);
PROCESS_INFORMATION processInfo;
char cmdLine[] = "a.bat";
//char cmdLine[] = "cmd.exe /k dir c:";
ZeroMemory( &processInfo , sizeof(PROCESS_INFORMATION) );
ret=CreateProcess(NULL, cmdLine, NULL,NULL,1,0,NULL,NULL,&si,&processInfo);
if( !ret ) return;