利用管道重定向标准输入输出流
来源:互联网 发布:菲律宾网络彩票合法吗 编辑:程序博客网 时间:2024/05/17 02:13
应用程序默认标准输出流是stdout、stdin、stderror,stdout的默认操作是送到终端显示出来,windows系统下我们可以修改者已默认行为,将应用程序的输出重定向到一个管道内,这样我们可以在进程内调用其他进程时进行输入输出操作。代码如下:
<span style="white-space:pre"></span>SECURITY_ATTRIBUTES sa;HANDLE hRead,hWrite;sa.nLength = sizeof(SECURITY_ATTRIBUTES);sa.lpSecurityDescriptor = NULL;sa.bInheritHandle = TRUE;if (!CreatePipe(&hRead,&hWrite,&sa,0)) {return FALSE;}STARTUPINFO si;PROCESS_INFORMATION pi; si.cb = sizeof(STARTUPINFO);GetStartupInfo(&si); si.hStdError = hWrite; //把创建进程的标准错误输出重定向到管道输入si.hStdOutput = hWrite; //把创建进程的标准输出重定向到管道输入si.wShowWindow = SW_HIDE;si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;//关键步骤,CreateProcess函数参数意义请查阅MSDN//openssl rsautl -decrypt -in hello.en -inkey private.key -out hello.de//openssl rsautl -encrypt -in hello.txt -inkey public.key -pubin -out hello.enif (!CreateProcess(L"openssl.exe", L"openssl rsautl -decrypt -in hello.en -inkey private.key -out hello.de",NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) {CloseHandle(hWrite);CloseHandle(hRead);return FALSE;}CloseHandle(hWrite);char buffer[4096] = {0}; //用4K的空间来存储输出的内容,只要不是显示文件内容,一般情况下是够用了。DWORD bytesRead; while (true) {if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)break;}CloseHandle(hRead);return true;
0 0
- 利用管道重定向标准输入输出流
- 管道重定向之重定向标准输入输出句柄
- 利用dup/dup2重定向标准输入输出
- Linux--标准输入输出、重定向及管道运用
- 标准输入输出重定向
- 标准输入输出重定向
- 利用管道实现控制台程序输入输出的重定向
- 利用管道实现控制台程序输入输出的重定向
- 管道操作 | 输入输出重定向
- Java 重定向标准输入输出流
- java标准流重定向和管道
- linux 标准输入输出重定向
- java标准输入输出重定向
- cgi标准输入输出重定向
- C++标准输入输出重定向
- java重定向标准输入输出
- Linux下输入输出流错误流 & 重定向 & 管道
- 标准输入输出和重定向输入输出
- [Android]Android的常用adb命令
- 【C#】 vs2010启动调试、停止调试非常慢
- OLE 常用方法和属性
- Active MQ KahaDB Invalid location
- JAVA复习笔记--------类(四)接口和抽象类
- 利用管道重定向标准输入输出流
- 专业知识点总结(补充版)
- UVA 10023 - Square root(手算平方根)
- js基础(2)
- Objectice-C之类层次结构
- gradle cache转为local Maven库,解决gradle编译依赖包时常被墙
- android系统发送短信息代码
- RTPS流媒体简介
- IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)