读书人

匿名管道ReadFile不返回请教高手

发布时间: 2012-08-31 12:55:03 作者: rapoo

匿名管道,ReadFile不返回,请问高手
如题,代码如下:
DWORD dws = -1;
char readBuf[4096];
while (dws != 0)
{
memset(readBuf, 0, 4096);
ReadFile(m_hSendByCmd, readBuf, 4096, &dws, 0);
m_strCmdReply += CString(readBuf);
SetDlgItemText(IDC_EDIT_RETURNINFO, pDlg->m_strCmdReply);
m_editReply.SetSel(0, -1);
}
hSendByCmd是cmd.exe的输出句柄。
现在的问题是,能够读取cmd.exe输出的信息,但当数据读完之后,再执行ReadFile时就挂起了,不见其返回。
请问各位高手原因及解决方法。

[解决办法]
你把写句柄关了没?
[解决办法]
ReadFile没有读到指定长的数据是不会返回了,除非句柄已经被关闭了!
[解决办法]
调用ReadFile时最后一个参数lpOverlapped为NULL时,ReadFile调用是同步的,直到读到数据、读出错或句柄被close掉了才会返回。

C/C++ code
BOOL ReadFile(  HANDLE hFile,                // handle to file  LPVOID lpBuffer,             // data buffer  DWORD nNumberOfBytesToRead,  // number of bytes to read  LPDWORD lpNumberOfBytesRead, // number of bytes read  LPOVERLAPPED lpOverlapped    // overlapped buffer); 

读书人网 >VC/MFC

热点推荐