
- 加为好友
- 发送私信
- 在线聊天
|
| 发表于:2008-07-25 15:38:125楼 得分:0 |
谢谢大家啦,可能是我没说清楚,下面是全部代码: #include <iostream> #include <Windows.h> using namespace std; int main() { STARTUPINFO siStartInfo; PROCESS_INFORMATION piProcInfo; SECURITY_ATTRIBUTES saAttr; //安全属性 saAttr.bInheritHandle = true; //可继承 saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.lpSecurityDescriptor = NULL; //匿名PIPE,此属性没用 char readBuf[100]; memset(readBuf,'0',sizeof(readBuf)); DWORD readNum; HANDLE hRead; //读句柄 HANDLE hWrite; //写句柄 BOOL bsuccess = ::CreatePipe(&hRead, &hWrite, &saAttr, 0); //创建匿名管道 if (bsuccess) { cout < <"管道创建成功" < <endl; } else { cout < <"管道创建失败" < <endl; } bsuccess = false; HANDLE hTemp = ::GetStdHandle(STD_OUTPUT_HANDLE); //获得本进程的标准输出 ::SetStdHandle(STD_OUTPUT_HANDLE, hWrite); //设置标准输出到匿名管道 ::GetStartupInfo(&siStartInfo); //获取本进程的STARTUPINFO结构信息 //------------------------------------------------------------------------- ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) ); ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) ); siStartInfo.cb = sizeof(STARTUPINFO); siStartInfo.hStdError = hWrite; siStartInfo.hStdOutput = hWrite; siStartInfo.hStdInput = hRead; /*siStartInfo.dwFlags ¦= STARTF_USESTDHANDLES;*/ //------------------------------------------------------------------------- //创建一个子线程 bsuccess = ::CreateProcess(NULL, TEXT("Client.exe"), // command line NULL, // process security attributes NULL, // primary thread security attributes TRUE, // handles are inherited 0, // creation flags NULL, // use parent's environment NULL, // use parent's current directory &siStartInfo, // STARTUPINFO pointer &piProcInfo); // receives PROCESS_INFORMATION ::SetStdHandle(STD_OUTPUT_HANDLE, hTemp); //恢复父线程的标准输出 ::CloseHandle(hWrite); //关闭写端口,以便读取数据 while (ReadFile(hRead, readBuf, 100, &readNum, NULL)) //读取内容 { readBuf[readNum] = '\0'; cout < <"从" < <readBuf < <"管道中读取数据字节数为:" < <readNum < <endl; } if (GetLastError() == ERROR_BROKEN_PIPE) { cout < <"管道进程被关闭" < <endl; } else { cout < <"读数据错误,错误代码为:" < <GetLastError() < <endl; } return 0; } 管道能创建,就是启线程时有异常 | | |
修改
删除
举报
引用
回复
| |