项目中遇到需要调用外部程序并且需要与之通信的问题,做下记录。

背景是想获取matlab的版本号,思路是想通过cmd系统调用 “matlab.exe -h”命令获取返回版本信息。

QProcess几种调用:

(1)Start()

原型:void QProcess::start(const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite)

非堵塞调用外部程序,结束后自动退出,随着主程序退出而退出

(2)execute()

原型:static int execute(const QString & program, const QStringList & arguments);

堵塞调用,结束后自动退出,随着主程序退出而退出

(3)startDetached()

原型:static bool startDetached(const QString & program, const QStringList & arguments);

堵塞调用,结束后不自动退出

示例代码:

QProcess process(0);
QString program = "cmd";
QStringList arguments;
arguments<<"/c"<<Path<<"-h";
process.start(program, arguments);
process.waitForStarted();//等待exe程序启动
process.waitForFinished();//等待exe程序结束
QString strReply = QString::fromLocal8bit(process.readAllStandardOutput());//获取返回结果

常见问题:

空格:

对于空格,当路径中出现空格时,调用会出现问题;解决办法是在原有的cmd命令形式上,对运行的单个参数作为arguments的单个成员。

例如

arguments<<"/c"<<Path<<"-h"<<"-help";

QT学习之QProcess进程调用相关推荐

  1. Linux学习-49-列出进程调用或打开的文件信息(lsof命令)

    12.6 lsof命令:列出进程调用或打开的文件信息 通过 ps 命令可以查询到系统中所有的进程,而lsof 命令(list opened files)可以进一步知道这个进程到底在调用哪些文件,列举系 ...

  2. Qt学习之路(58): 进程间交互

    所谓 IO 其实不过是与其他设备之间的数据交互.在 Linux 上这个概念或许会更加清楚一些.Linux 把所有设备都看作是一种文件,因此所有的 IO 都归结到对文件的数据交互.同样,与其他进程之间也 ...

  3. 【Qt】使用QProcess调用其它程序或脚本

    [Qt]使用QProcess调用其它程序或脚本 大概试了一下,还是不错的,不过字符编码问题还不太好解决: 代码: #include "mainwindow.h" #include ...

  4. Qt使用QProcess进程间双向通信(linux和win系统)

    文章目录 监听效果图 前言 QProcess 猜想实现 实例验证(Linux系统实现) 问题分析 代码实现 Win系统子进程监听实现 题外话 qprocess 如何关闭子进程 监听效果图 前言 最近需 ...

  5. LINUX ltrace命令-用来跟踪进程调用库函数的情况学习

    参考链接: http://www.bluestep.cc/linux-ltrace%E5%91%BD%E4%BB%A4-%E7%94%A8%E6%9D%A5%E8%B7%9F%E8%B8%AA%E8% ...

  6. QT学习笔记(1)----- QT简介

    名字由来 在<C++ GUI Programming with Qt 4>里有这么一段介绍: A Brief Histroy of Qt: The letter 'Q' was chose ...

  7. QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)

    QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64) 1.编译方式介绍: 2.动态编译方式打包发布QT程序: 方法一:手动复制 方法二:使用工具 问题& ...

  8. Qt输入输出之QProcess

    Qt输入输出之QProcess Qt提供了一个QProcess类用于启动外部程序并与之通信.这个类是异步工作的,而且在后台执行,这样用户界面就可以始终保持响应.启动一个新的进程的操作非常简单,只需要将 ...

  9. strace,ltrace linux下跟踪进程调用的命令

     本工具可以用来做大多数排除,比如mount一个NFS,很慢,找不出原因,我们可以使用strace命令来跟中mount这个经常所有的调用过程. strace 命令是一种强大的工具,它能够显示所有由 ...

最新文章

  1. App Store 状态列表
  2. 类与接口(二)java的四种内部类详解
  3. 算法学习一:排序算法实现与算法性能分析
  4. Flash MX 2004 帮助CHM 在线版
  5. 从零开始学习UCOSII操作系统15--总结篇
  6. sqlserver 2000 sp3补丁
  7. c语言n个自然数得阶乘求和,计算n个自然数阶乘的和
  8. 实现子弹自动向前运动 定时器 移动精灵 精灵释放
  9. docker中各ID之间的关系和计算(二)-layerID-diffID-chainID-cacheID的计算
  10. STM32F103ZE+SHT30检测环境温度与湿度(IIC模拟时序)
  11. matlab产生均匀白噪声,各种分布白噪声的产生matlab.pdf
  12. 关于PPP拨号的接入点
  13. 字符串搜索、搜索子串 rangeOfString方法
  14. 云原生架构下的微服务选型和演进
  15. 计算机的硬件故障维修,计算机硬件故障分析与解决方法
  16. 深度学习康耐视ViDi如何添加工具
  17. psd 文件用什么打开
  18. 超级大佬已提前布局AI域名,人工智能时代真的来临了?
  19. 第十三届服务外包创新创业大赛记录总结(一)
  20. java基础巩固-宇宙第一AiYWM:为了维持生计,编程语言番外篇之机器学习(项目预测模块总结:线性回归算法、逻辑回归分类算法)~整起

热门文章

  1. 安卓调用手机通讯录选择联系人
  2. 初创公司如何搭建开发框架_作为自由开发人员或初创公司如何管理税款
  3. 用户变量tmp修改了怎么恢复_Window系统盘告急怎么办,系统文件深度清理权威指南...
  4. 仿webQQ2.0技术设计以及源码下载
  5. java计算机毕业设计建材公司管理系统MyBatis+系统+LW文档+源码+调试部署
  6. golang对map的理解
  7. 微软认真了!微软Surface平板强来袭击,采用IntelX86 I5 CPU 支持Windows8 Pro版本 全面兼容PC端软件
  8. STM32F103C8T6调试CAN通讯
  9. 前端学习——纯CSS实现动态翻转导航条
  10. html网站开发实例教程,网页设计与开发——HTML、CSS、JavaScript实例教程