匿名管道,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掉了才会返回。
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);