将读取到的匿名管道的数据显示在EDIT BOX的时候数据怎么截断了???
我的问题是这样的:
我建立一个匿名管道,然后用CreateProcess启动了子进程,这个子进程是
VC的编译器cl.exe。我用这个编译器编译了一个Hello.cpp的文件,我现在要获得它的输出内容,我确实获得了它的内
容并且把这个内容放在了一个字符数组里,接下来就把这个获得的内容显示到我EDIT BOX里了,问题就出现在EDIT BOX
里显示的内容被截断了,只显示其中的第一句,后面的全部没有显示出来。这是怎么回事啊???
我用了很多方法都行不通,请各位大侠帮忙指点迷津啊。先谢谢啦。
我写的代码是:
SECURITY_ATTRIBUTES sa;
sa.bInheritHandle=TRUE;
sa.lpSecurityDescriptor=NULL;
sa.nLength=sizeof(SECURITY_ATTRIBUTES);
if(!CreatePipe(&hRead,&hWrite,&sa,0))
{
MessageBox("创建匿名管道失败!");
return;
}
STARTUPINFO sui;
PROCESS_INFORMATION pi;
ZeroMemory(&sui,sizeof(STARTUPINFO));
sui.cb=sizeof(STARTUPINFO);
sui.wShowWindow=SW_HIDE;
sui.dwFlags=STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
//sui.hStdInput=hRead;
sui.hStdOutput=hWrite;
sui.hStdError=hWrite;
if(!CreateProcess("C:\\Program Files\\Microsoft Visual Studio\\VC98\\Bin\\CL.EXE","cl
Hello.cpp",NULL,NULL,
TRUE,0,NULL,"G:\\study\\Hello例子",&sui,&pi))
{
CloseHandle(hRead);
CloseHandle(hWrite);
hRead=NULL;
hWrite=NULL;
MessageBox("创建子进程失败!");
return;
}
else
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
DWORD dwRead;
char buf[1024];
memset(buf,0,sizeof(buf));
if(!ReadFile(hRead,buf,1024,&dwRead,NULL)||dwRead==0)
{
MessageBox("读取数据失败!");
return;
}
SetDlgItemText(IDC_EDIT1,buf);
但是最终显示到IDC_EDIT1里的内容只有所用内容的第一句,我调试运行的时候知道了buf里的所有内容。但就是不能全
部显示出来。大侠帮帮忙啊。