用CreateProcess执行一个dos程式序,若使用管道操作会出现无法输出信息在dos窗口的有关问题

用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;



------解决方案--------------------
可不可以用popen呢
------解决方案--------------------
呵呵,原贴

si.hStdInput=hReadPipe2;
si.hStdOutput=si.hStdError=hWritePipe1;

hReadPipe2,hReadPipe1 是什么值?