用途

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

  • 如很多扫描工具实际上是调用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. 没有熙熙攘攘,百度VR在世界大会的一场奇妙之旅
  2. Dataset之Pascal:Pascal竞赛及其Pascal VOC(VOC 2012、VOC 2007) 数据集的简介、下载、使用方法详细攻略
  3. html for 循环模板
  4. UART0串口编程系列(四)
  5. 利用airTest的图像实别技术测试Web应用
  6. 2017 Multi-University Training Contest - Team 7:1005. Euler theorem(答案是(n+3)/2)
  7. python对象属性是与数据有关的项目_python之对象产生,属性(定义的值)的查找原则,对象绑定关系...
  8. python string_Python String casefold()
  9. 我的chrome插件
  10. android连接airprint打印机,完爆AirPrint 揭秘联想安卓终端乐打印
  11. 如何使用matlab绘制晶胞结构示意图
  12. win10无法启动修复服务器,win10 bcd损坏无法开机怎样修复_win10系统bcd损坏开机进不了系统解决方法...
  13. 安装程序无法打开注册表项 UNKNOWN\Components\…解决办法
  14. 【软件测试】软件测试随手记
  15. 【MyBatis】 动态SQL——模糊查询 LIKE
  16. 上市公司融资需要哪些条件
  17. Java函数式编程学习——Stream流
  18. 禾川科技科创板上市破发:大跌17% 公司市值近30亿
  19. python 绘制科赫雪花
  20. 零售门店促销创新的八个思路

热门文章

  1. Apache Knox报错大全
  2. 利用UK8S落地微服务,加速元年科技业务迭代
  3. 计蒜客 - 法师康的工人
  4. java web项目中hibernate导入问题解决, AbstractInterceptor
  5. 服务器好玩的项目_我的世界MC6个我的世界服务器的故事 论沙雕服主的骚操作...
  6. 光猫拨号有公网ipv6但是路由器没有下发ipv6的功能怎么办
  7. 计算机的代表性产品,这些台式机将是2017年电脑界的标志性产品
  8. SDET Unicorns - 为什么如此难以雇用SDET?
  9. SpringBoot+Dubbo+环信(即时通信)整合
  10. Chromium OS——下载源码6之获取源码