利用管道获取控制台程序的标准输出
来源:互联网 发布:交换机有mac地址吗 编辑:程序博客网 时间:2024/06/06 01:29
1.该程序调用控制台程序hello.exe,通过管道获取到hello.exe的标准输出数据,并打印到当前程序的标准输出。
#include <Windows.h>#include <iostream>#include <string>using namespace std;void invoke(string exe);int main(int argc, char* argv[]){string exe = "hello.exe";invoke(exe);return 0;}void invoke(string exe){SECURITY_ATTRIBUTES saPipe; saPipe.nLength = sizeof(SECURITY_ATTRIBUTES); saPipe.lpSecurityDescriptor = NULL; saPipe.bInheritHandle = TRUE;HANDLE hReadPipe, hWritePipe;BOOL bSuccess = CreatePipe(&hReadPipe, &hWritePipe, &saPipe, 0); if(!bSuccess) return ;PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si,0,sizeof(si)); si.hStdInput=hReadPipe; si.hStdOutput=hWritePipe; si.dwFlags=STARTF_USESTDHANDLES; si.cb=sizeof(si); if(CreateProcess(NULL,(char*)exe.c_str(),NULL,NULL,TRUE,0,NULL,NULL,&si,&pi)){CloseHandle(pi.hThread); const int max = 500;char buf[max] = {0};DWORD dw;if(ReadFile(hReadPipe,buf,max-1,&dw,NULL)){cout<<buf<<endl;//ZeroMemory(buf,max);}CloseHandle(pi.hProcess); }CloseHandle(hReadPipe);CloseHandle(hWritePipe);}输出结果为:
2. hello.exe的主代码
#include <stdio.h>void main(){printf("hello!\n");}
0 0
- 利用管道获取控制台程序的标准输出
- 利用管道获取控制台程序的标准输出
- VC 匿名管道获取控制台程序的输出
- 匿名管道实现获取控制台程序输出
- 管道技术获取控制台输出
- 管道技术获取控制台输出
- 管道技术获取控制台输出
- 管道技术获取控制台输出
- 管道技术获取控制台输出
- 利用管道实现控制台程序输入输出的重定向
- 利用管道实现控制台程序输入输出的重定向
- 利用windows管道技术捕获标准输出
- form程序利用控制台输出
- 在图形界面中实时捕获控制台程序的标准输出
- 图形界面中实时捕获控制台程序的标准输出
- java 程序获取在exe 在控制台输出的信息
- 获取控制台程序(Console)的输出内容
- VC调用CMD命令通过控制台管道获取输出结果
- 用KMP算法查找字符串中字串位置
- hdu 1573: X问题(线性同余方程组求正整数解的个数)
- 目标跟踪源码总结
- 2014年工作总结
- Ignatius and the Princess IV
- 利用管道获取控制台程序的标准输出
- IO流笔记4
- Android控件之ImageView
- xcode6中快捷键
- 1.Java NIO系列教程之概述
- unity学习之NGUI(二)
- 1011
- POJ 1384 完全背包
- Fibonacci Again