cmd命令的管道重定向
2011-07-19 09:42
183 查看
#include "windows.h" #include "iostream" using namespace std; HANDLE hRead,hWrite,dWrite,dRead; DWORD WINAPI ThreadRead(LPVOID lpParameter) //读取线程 { DWORD dw=-1; char temp[4096]; while(dw != 0) { memset(temp,0,4096); ReadFile(hRead,temp,4095,&dw,0); if(dw!=0) { cout<<temp; } } return 0; } void Read() { HANDLE handle = CreateThread(NULL, 0, ThreadRead, NULL, 0, NULL); //创建读取线程 if(! handle) { MessageBox(NULL,"创建线程失败","Tip",0); return ; } CloseHandle(handle); } int main(int argc, char * argv[]) { DWORD ErrorCode; DWORD dw=-1; char ErrorString[500]; SECURITY_ATTRIBUTES sa; //创建安全信息结构体 sa.bInheritHandle=true; sa.lpSecurityDescriptor=0; sa.nLength=sizeof(sa); CreatePipe(&hRead,&hWrite,&sa,4096); //创建输出管道 if(ErrorCode = GetLastError()) { cout<<"创建输入管道失败!"<<endl; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, ErrorCode, LANG_SYSTEM_DEFAULT, ErrorString, 500, NULL); cout<<ErrorString<<endl; return 1; } CreatePipe(&dRead,&dWrite,&sa,4096); //创建输入管道 if(ErrorCode = GetLastError()) { cout<<"创建输出管道失败!"<<endl; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, ErrorCode, LANG_SYSTEM_DEFAULT, ErrorString, 500, NULL); cout<<ErrorString<<endl; return 2; } STARTUPINFO si; //创建进程开始信息结构体 GetStartupInfo(&si); si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; si.wShowWindow = SW_HIDE; si.hStdOutput = hWrite; si.hStdInput = dRead; PROCESS_INFORMATION pi; //创建进程 CreateProcess(NULL, "cmd.exe", NULL, NULL, true, 0, NULL, NULL, &si, &pi); //此为命令窗口所用的创建进程语句 if(ErrorCode = GetLastError()) { cout<<"创建进程失败!"<<endl; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, ErrorCode, LANG_SYSTEM_DEFAULT, ErrorString, 500, NULL); cout<<ErrorString<<endl; return 3; } char data[100]; while(1) { gets(data); if(strcmp(data,"cls")==0) { system("cls"); continue; } strcat(data,"\n"); fflush(stdin); WriteFile(dWrite, data, strlen(data), &dw, NULL); Read(); if(strcmp(data,"exit")==0) return 0; } return 0; }
相关文章推荐
- RHCE课程-初级部分5、常用文本处理命令,输入输出重定向,管道
- linux shell 管道命令(pipe)使用及与shell重定向区别
- cmd脚本命令---之组合命令、管道命令
- Linux学习命令汇总四——Bash中变量.文件通配符.管道与重定向.算术运算及循环或判断语句
- Linux 入门记录:十六、Linux 多命令协作:管道及重定向
- shell命令重定向与管道
- CreateProcess 执行CMD命令,并重定向输出
- linux-命令替换-通配符-重定向-管道
- C++学习:通过管道进行cmd进程输入输出重定向
- linux 的重定向、管道、xargs 命令
- 命令行简介之重定向和管道
- Linux基本配置和管理 2 ---- Linux多命令协作----管道及重定向
- linux shell 管道命令(pipe)使用及与shell重定向区别
- Linux 管道、命令替换、重定向
- linux下cat、管道|、重定向命令详解
- Linux基础之IO重定向及管道详解(涉及tr、tee命令)
- linux入门基础——linux多命令协作:管道及重定向
- linux数据流重定向,管道以及搭配grep等命令
- linux shell 管道命令(pipe)使用及与shell重定向区别
- bash (cmd )管道和重定向