1、windows

在windows上使用API函数CreateProcessW函数或者winexe 来启动新的进程,执行cmd命令:

int execute(const TCHAR *childexe)
{   SECURITY_ATTRIBUTES sa = {0};                                              HANDLE hRead = NULL, hWrite = NULL;                                                sa.nLength = sizeof(SECURITY_ATTRIBUTES);    sa.lpSecurityDescriptor = NULL;    sa.bInheritHandle = TRUE;    if (!CreatePipe(&hRead, &hWrite, &sa,0))                             {    return false;    }    HANDLE hTemp = GetStdHandle(STD_OUTPUT_HANDLE);SetStdHandle(STD_OUTPUT_HANDLE,hTemp);STARTUPINFO si = {0};    PROCESS_INFORMATION pi = {0};    si.cb = sizeof(STARTUPINFO);    GetStartupInfo(&si);   si.hStdError = hWrite;                                              si.hStdOutput = hWrite;                                                       si.wShowWindow = SW_HIDE;    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;    bRet = CreateProcess(NULL,childexe,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi);if (!bRet))             {    CloseHandle(hWrite);   CloseHandle(hRead);   return false;   }    CloseHandle(hWrite);char ReadBuff[256] = {0};while(ReadFile(hRead,ReadBuff,256,&ReadNum,NULL)){ReadBuff[ReadNum] = '\0';cout << ReadBuff << "--" << ReadNum << endl;}cin.get();return 0;//WaitForSingleObject(pi.hProcess,INFINITE);                            //CloseHandle(pi.hProcess);                                             //CloseHandle(pi.hThread);                                           //CloseHandle(hWrite);                                                  //ReadFile(hRead, buffer, MAX_PATH_LENGTH, &bytesRead, NULL);           //CloseHandle(hRead);                                                   }

2、linux

1 system函数可以运行命令行
2 popen打开一个命令行的管道
3 通过fgets获得该管道传输内容

在linux上运行的例子如下:


int g_stop = 0;
void execute(const char *cmd)
{   char buf_ps[1024];   char ps[1024]={0};   FILE *ptr;   strcpy(ps, cmd);   if((ptr=popen(ps, "r"))!=NULL)   {   while(fgets(buf_ps, 1024, ptr)!=NULL)   {   printf("%s\n",buf_ps);if(g_stop == 1)break;}   pclose(ptr);   ptr = NULL;   }   else  {   printf("popen %s error\n", ps);   }
}

说明:
1、参数cmd为要执行的命令行,result为命令行运行结果。
2 、输入的cmd命令用… 2>&1 的形式,可以将标准错误读进来

c++调用子进程捕获输出(windows,linux)相关推荐

  1. python调用linux命令输出结果,Python-运行shell命令并捕获输出

    小编典典 这个问题的答案取决于你使用的Python版本.最简单的方法是使用以下subprocess.check_output功能: >>> subprocess.check_outp ...

  2. 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

    转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...

  3. 运行shell命令并捕获输出

    我想编写一个函数,该函数将执行shell命令并以字符串形式返回其输出,无论它是错误消息还是成功消息. 我只想获得与命令行相同的结果. 能做到这一点的代码示例是什么? 例如: def run_comma ...

  4. python执行shell命令查看输出_python 运行 shell 命令并捕获输出_python_酷徒编程知识库...

    这个问题的答案取决于你使用的python 版本. 最简单的方法是使用 subprocess.check_output 函数:>>> subprocess.check_output([ ...

  5. FFmpeg音视频开发实战5 iOS/Android/windows/Linux -陈超-专题视频课程

    FFmpeg音视频开发实战5 iOS/Android/windows/Linux -159618人已学习 课程介绍          咨询QQ: 347181469. 本课程适合中,从事音视频,网络通 ...

  6. Windows/Linux客户端挂载NFS共享存储

    Windows/Linux客户端挂载NFS共享存储 1. Linux搭建NFS共享存储 1.1. NFS概述 1.2. 安装并配置NFS Server 1.3. 启动并验证NFS Server 2. ...

  7. Maven的安装文字版(Windows/Linux/Mac)

    以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_environment_setup.html,安装信 ...

  8. linux语言windows 语言,作业系统一般用什么编码语言程式设计?如:Windows,Linux,是组合语言吗?还是自己开发的程式码?...

    作业系统一般用什么编码语言程式设计?如:Windows,Linux,是组合语言吗?还是自己开发的程式码?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内 ...

  9. linux下java调用python脚本,java - 在Linux Terminal中以编程方式从Java调用python脚本 - 堆栈内存溢出...

    我正在开发一个Java应用程序,用于检查源文件中的补丁程序(是否存在). 用于检测补丁程序更改的核心逻辑位于python脚本[titled'patch.py​​']中,并且我的Java应用程序与此Py ...

最新文章

  1. Qt Style Sheet 翻译(中)--类似css
  2. org.springframework.http.converter.HttpMessageNotReadableException: Required request body is(亲测)
  3. Android面试最新总结
  4. LINUX下PHP安装VLD扩展并测试OK
  5. kafka原理_kafka入门(原理搭建简单使用)
  6. vue数据定义格式_用好单元格自定义格式,让Excel按照你的要求显示数据
  7. 网络拓扑图画图工具_一款功能强大的免费在线作图工具
  8. Microsoft Excel 教程:如何在 Excel 中创建自定义数字格式?
  9. DP动态规划思想讲解
  10. apex显示服务器连接超时,apex与服务器链接超时
  11. oracle dataguard 日志传输,从alert日志看Oracle 11g DataGuard日志传输
  12. nagios 总结_caci 与 nagios 一些总结 【一】
  13. 阿里云国际版忘记会员名或登录密码,怎么办?
  14. R平方值python实现
  15. 如何学习linux系统
  16. 解决雷电模拟器在windows 10下无法桥接网卡的问题
  17. 特征方程求数列的通项公式(二阶线性递推式)
  18. 如何提高App的下载量
  19. ESP-WHO(一)ESP32 摄像头驱动分析
  20. 360随身wifi产品分析

热门文章

  1. python连载第11篇 if 语句
  2. 理工科同学转行经管咨询金融,一定要慎重
  3. python使用scrapy_Python实现从脚本里运行scrapy的方法
  4. python编程工时计算_Python编程题:两个日期间的天数统计(附代码)
  5. 浅论企业文化对企业发展的影响
  6. 苹果春季新品发布会来了:将推iPhone13 Pro系列紫色版
  7. 英伟达吞并ARM的交易计划失败!
  8. 烧光百亿,敢从宝马挖人!中国后台最硬神车,竟惨到卖厂还债?
  9. 受半导体短缺及疫情影响,丰田已下调9月10月及当前财年产量预期
  10. 微信输入法要来了!就长这个样子