专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VC

DOS输出重定向有关问题。FC命令重定向失败

发布时间:2011-06-23 14:02:01 文章来源:www.iduyao.cn 采编人员:星星草
DOS输出重定向问题。FC命令重定向失败
BOOL CDOSDlg::ExecDosCmd() 

{    

 #define EXECDOSCMD "dir c:" 

 SECURITY_ATTRIBUTES sa; 

 HANDLE hRead,hWrite;

 sa.nLength = sizeof(SECURITY_ATTRIBUTES); 

 sa.lpSecurityDescriptor = NULL; 

 sa.bInheritHandle = TRUE; 

 if (!CreatePipe(&hRead,&hWrite,&sa,0)) 

 { 

     return FALSE; 

 } 

 char command[1024];    

 strcpy(command,"Cmd.exe /C "); 

 strcat(command,EXECDOSCMD); 

 STARTUPINFO si; 

 PROCESS_INFORMATION pi; 

 si.cb = sizeof(STARTUPINFO); 

 GetStartupInfo(&si); 

 si.hStdError = hWrite;           

 si.hStdOutput = hWrite;          

 si.wShowWindow = SW_HIDE; 

 si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; 

 

 if (!CreateProcess(NULL, command,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) 

 { 

     CloseHandle(hWrite); 

     CloseHandle(hRead); 

     return FALSE; 

 } 

 CloseHandle(hWrite);

 char buffer[4096] = {0};          

 DWORD bytesRead; 

 while (true) 

 { 

     if (!ReadFile(hRead,buffer,4095,&bytesRead,NULL)) 

    break; 

     

     AfxMessageBox(buffer);   // 

 } 

 CloseHandle(hRead); 

 return TRUE; 

        }

------------------------

如果#define EXECDOSCMD "dir c:"  换成 "fc e:\\1.txt e:\\2.txt" 就在

     if (!ReadFile(hRead,buffer,4095,&bytesRead,NULL)) 

    break; 

程序就跳出了?

原因是为什么?为什么dir的输出就可以正常通过管道读取 而fc的输出就不行?

已经在CMD下测试过FC命令,CMD下正常显示结果
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: