C/C++编程 获取调用其他程序的输出、匿名管道读写
用途
调用外部命令来协助完成某些功能
如很多扫描工具实际上是调用nmap来帮助扫描任务的
#include <stdio.h>
//#include <string.h>
#include <windows.h>int main(int argc,char *argv[])
{SECURITY_ATTRIBUTES sa; //保存设定管道的安全属性HANDLE hRead,hWrite;sa.nLength = sizeof(SECURITY_ATTRIBUTES);sa.lpSecurityDescriptor = NULL; //安全描述符sa.bInheritHandle = TRUE; //安全描述的对象能否被新创建的进程继承if (!CreatePipe(&hRead,&hWrite,&sa,0)) //创建一个匿名管道{printf("Error On CreatePipe()");return -1;}STARTUPINFO si; //用于指定新进程的主窗口特性的一个结构PROCESS_INFORMATION pi; //构返回有关新进程及其主线程的信息si.cb = sizeof(STARTUPINFO);//包含STARTUPINFO结构中的字节数.如果Microsoft将来扩展该结构,它可用作版本控制手段GetStartupInfo(&si); //取得进程在启动时被指定的 STARTUPINFO 结构//hWrite为匿名管理写入句柄si.hStdError = hWrite; //错误输出写入匿名管道si.hStdOutput = hWrite; //标准输出写入匿名管道//si.hStdInput //标准输入,这里没用到si.wShowWindow = SW_HIDE; //隐藏窗口si.dwFlags = STARTF_USESHOWWINDOW | //使用wShowWindow 成员(用于隐藏窗口)STARTF_USESTDHANDLES; //使用hStdInput 、hStdOutput和hStdError成员(重定向到匿名管道)if (!CreateProcess(NULL,"C:\\windows\\system32\\cmd.exe /c dir /?"//创建进程,NULL,NULL,TRUE,(DWORD)NULL,NULL,NULL,&si,&pi)){printf("Error on CreateProcess()");return -2;}CloseHandle(hWrite); //关闭匿名管道写入//char str[40960] = {0};char buffer[4096] = {0}; //用于保存输出信息DWORD bytesRead;printf("################################################################################\n");while (TRUE){if (!ReadFile(hRead,buffer,4095,&bytesRead,NULL))//读取匿名管道信息break;//strcpy(str,buffer);printf("%s\n",buffer);}//printf("%s\n",str);CloseHandle(hRead);return 0;
}
C/C++编程 获取调用其他程序的输出、匿名管道读写相关推荐
- Linux编程:多个子进程与父进程使用匿名管道读写
编写程序,在程序中父进程先后创建子进程1和子进程2.父子三个进程并发执行,并利用同一个匿名管道通信:两个子进程分别向管道写一则信息(内容自定,但要求包含子进程信息):父进程从管道读出信息并显示出来(要 ...
- MFC匿名管道原理详解、函数总结、调用实例(用MFC的匿名管道读取CMD输出内容)(C++语言)
本博客主要总结MFC中匿名管道的原理和具体调用实例,以及调用匿名管道三个核心函数各个参数用法详解,具体的如下所述. 博主在做项目时,遇到一个问题.用程序调用一个进程,然后读取进程输出信息.但是,博主用 ...
- Android编程获取网络连接状态及调用网络配置界面
获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityMan ...
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
http://www.mobiletuts.me 获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. An ...
- android编程获取网络和wifi状态及调用网络设置界面,Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面 - Android平台开发技术 - 博客园...
获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityMan ...
- Android编程 获取网络连接状态 及调用网络配置界面
获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityMan ...
- C++调用MATLAB程序进行混合编程以及常见问题解决
C++调用MATLAB程序进行混合编程以及常见问题解决 C++调用MATLAB程序方法 MATLAB打包生成DLL动态链接库 VS2017环境配置 程序调用 常见问题解决 参考 C++调用MATLAB ...
- 高并发编程-捕获线程运行时的异常 + 获取调用链
文章目录 概述 捕获线程运行时的异常 使用场景 UncaughtExceptionHandler 接口 示例 获取调用链 使用线程池的场景: 获取线程运行时异常 概述 捕获线程运行时的异常 我们看下T ...
- linux程序崩溃时调用链,Linux 获取并分析程序崩溃时的调用堆栈
下面是一个小例子,说明了程序出现段错误时,如何打印程序的堆栈信息. #include #include #include #include static void WidebrightSegvHand ...
最新文章
- shell编程【分发系统】
- 《HTML5游戏编程核心技术与实战》一2.6 其他全局属性
- 无法读取iis redirection.config
- centos 7 php7 yum源
- 干货!一文看Doris在作业帮实时数仓中的应用实践
- java 语法 —— 数组
- 拓端tecdat|Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
- 项目过程管理(十七)结项
- 配置TURN服务器实现NAT穿透
- 图像基本处理(灰度化)
- 【基本数据结构】python array数组 [easy] leetcode1,53,88,118,121,217,350,566
- Android颜色对应的xml色值
- 第327场周赛6284. 使字符串总不同字符的数目相等
- clickhouse--Window Functions 窗口函数概念讲解及实际使用示例
- StackOverflowError与OutOfMemoryError区别
- 当你在Mac下载东西的时候,有时候因为网络或者其他问题中断了,双击重新下载会提示你“您所请求的资源没有权限”?
- 【辣子鸡的家常做法】
- whistle入门使用
- FPGA架构与HLS工具
- Excel如何破解vba的宏密码