用途

  • 调用外部命令来协助完成某些功能

  • 如很多扫描工具实际上是调用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++编程 获取调用其他程序的输出、匿名管道读写相关推荐

  1. Linux编程:多个子进程与父进程使用匿名管道读写

    编写程序,在程序中父进程先后创建子进程1和子进程2.父子三个进程并发执行,并利用同一个匿名管道通信:两个子进程分别向管道写一则信息(内容自定,但要求包含子进程信息):父进程从管道读出信息并显示出来(要 ...

  2. MFC匿名管道原理详解、函数总结、调用实例(用MFC的匿名管道读取CMD输出内容)(C++语言)

    本博客主要总结MFC中匿名管道的原理和具体调用实例,以及调用匿名管道三个核心函数各个参数用法详解,具体的如下所述. 博主在做项目时,遇到一个问题.用程序调用一个进程,然后读取进程输出信息.但是,博主用 ...

  3. Android编程获取网络连接状态及调用网络配置界面

    获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityMan ...

  4. Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面

    http://www.mobiletuts.me 获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. An ...

  5. android编程获取网络和wifi状态及调用网络设置界面,Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面 - Android平台开发技术 - 博客园...

    获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityMan ...

  6. Android编程 获取网络连接状态 及调用网络配置界面

    获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityMan ...

  7. C++调用MATLAB程序进行混合编程以及常见问题解决

    C++调用MATLAB程序进行混合编程以及常见问题解决 C++调用MATLAB程序方法 MATLAB打包生成DLL动态链接库 VS2017环境配置 程序调用 常见问题解决 参考 C++调用MATLAB ...

  8. 高并发编程-捕获线程运行时的异常 + 获取调用链

    文章目录 概述 捕获线程运行时的异常 使用场景 UncaughtExceptionHandler 接口 示例 获取调用链 使用线程池的场景: 获取线程运行时异常 概述 捕获线程运行时的异常 我们看下T ...

  9. linux程序崩溃时调用链,Linux 获取并分析程序崩溃时的调用堆栈

    下面是一个小例子,说明了程序出现段错误时,如何打印程序的堆栈信息. #include #include #include #include static void WidebrightSegvHand ...

最新文章

  1. shell编程【分发系统】
  2. 《HTML5游戏编程核心技术与实战》一2.6 其他全局属性
  3. 无法读取iis redirection.config
  4. centos 7 php7 yum源
  5. 干货!一文看Doris在作业帮实时数仓中的应用实践
  6. java 语法 —— 数组
  7. 拓端tecdat|Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
  8. 项目过程管理(十七)结项
  9. 配置TURN服务器实现NAT穿透
  10. 图像基本处理(灰度化)
  11. 【基本数据结构】python array数组 [easy] leetcode1,53,88,118,121,217,350,566
  12. Android颜色对应的xml色值
  13. 第327场周赛6284. 使字符串总不同字符的数目相等
  14. clickhouse--Window Functions 窗口函数概念讲解及实际使用示例
  15. StackOverflowError与OutOfMemoryError区别
  16. 当你在Mac下载东西的时候,有时候因为网络或者其他问题中断了,双击重新下载会提示你“您所请求的资源没有权限”?
  17. 【辣子鸡的家常做法】
  18. whistle入门使用
  19. FPGA架构与HLS工具
  20. Excel如何破解vba的宏密码

热门文章

  1. 计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都可以看看.
  2. MXNet/Gluon 中 Triplet Loss 算法
  3. 一个超低价竞标的真实故事
  4. VIVO 提前批笔试及面试经历
  5. 使用autoIt 上传文件
  6. Vue3 实现一个自定义toast(小弹窗)
  7. DBA_SEGMENTS - 查看数据库对象所分配的物理存储空间
  8. 产业互联网平台建设的策略
  9. 32、STM8 无源蜂鸣器实验
  10. 华科跟清华计算机专业,华科+清华 VS 南大+哥大 哪个更强