HANDLE hOutputRead, hOutputWrite,hInputRead,hInputWrite;
DWORD bytesRead;
char *buffer=new char[1024];
memset(buffer, 0, 1024); SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hOutputRead, &hOutputWrite, &sa, 0))
{
return;
} if (!CreatePipe(&hInputRead, &hInputWrite, &sa, 0))
{
return;
} STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hOutputWrite;
si.hStdOutput = hOutputWrite;
si.hStdInput = hInputRead;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL, "c:\\windows\\system32\\telnet.exe", NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi))
{
return;
} Sleep(200);
while (true)
{
Sleep(1);
memset(buffer, 0, 1024);
bool bret = ReadFile(hOutputRead, buffer, 1024, &bytesRead, NULL); if (bret)
{
if (bytesRead == 0)
break;
//此处获取回显信息
...
if (bytesRead < 1024)
break;
}
else
{
DWORD i = GetLastError();
break;
} }
代码如上,在ReadFiLe那里的时候,程序阻塞了,因为管道里没有数据但是我如果运行cmd.exe就可以读出管道内的数据请问为什么telnet就不行了呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货