QProcess 启动 进程 传参数 启动控制台进程 传参

目录

QProcess

启动外部程序的两种方式

依赖式

分离式:

启动进程前的预处理

设置启动路径

设置启动命令参数

 设置启动工作目录

  设置启动所需环境:

启动的状态

 code smple:

QProcess 控制台进程

QProcess启动控制台不显示窗口

注意:这里不能正常传参;

通过“cmd.exe”启动,可以显示控制台,方便输出信息

解决不能传参问题

调用控制台,并传入参数 ,同时 显示控制台:


QProcess

用于完成启动外部程序,并与其交互通信。

启动外部程序的两种方式

依赖式

外部程序启动后,将随主程序的退出而退出。

void start(const QString & program,const QStringList &arguments,OpenMode mode = ReadWrite)
分离式:

外部程序启动后,当主程序退出时并不退出,而是继续运行。

void startDetached(const QString & program,const QStringList & arguments,const QString&workingDirectory=QString(),qint64 *pid =0)

启动进程前的预处理

设置启动路径

可以提前设置启动路径,也可以在start方法中进行设置

void setProgram(const QString & program)
设置启动命令参数

可以提前设置启动命令参数也可以不设置(非必须),也可以在start方法中进行设置。

void setArguments(const QStringList & arguments)
 设置启动工作目录
void setWorkingDirectory
  设置启动所需环境:
  void setProcessEnvironment	

	

code sample:

QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("PATH", env.value("PATH") + ";" + QCoreApplication::applicationDirPath());
 
process->setProcessEnvironment(env);

启动的状态

1、外部程序未启动时,状态是NotRunning;
2、外部程序启动时,状态是Starting;
3、外部程序启动之后,状态是Running,并发出started()信号,此时可对QProcess进行RW操作;
4、外部程序退出时,状态是NotRunning,并发出finished()信号。finished()信号会包含退出码和退出状态信息,可通过exitCode()和exitStatus()来获得。
5、外部程序发生错误时,Qprocess会发出一个error()信号,可通过error()来获得其错误类型,通过state()获得当前程序的状态。


 code smple:

Send:

      QProcess* process=new QProcess(this);
       connect(process,&QProcess::started,[=]()//启动完成
       {
           qDebug()<<"进程已启动";
       });
       connect(process,&QProcess::stateChanged,[=]()//进程状态改变
       {
           if(process->state()==QProcess::Running)
           {
               qDebug()<<"正在运行";
           }
           else if(process->state()==QProcess::NotRunning)
           {
               qDebug()<<"不在运行";
              
           }
           else
           {
               qDebug()<<"正在启动";

           }
       });
       connect(process,&QProcess::errorOccurred,[=]()
       {
           qDebug()<<process->errorString();//输出错误信息
       });

      QString cmd = "xxx.exe";
     QStringList args;
     args.append("-h");
     process.start(cmd, args);
     process.waitForFinished();

Receive:

int main(int argc, char** argv)
{
	printf("argc = %d\n", argc);
	printf("path0 = %s\n", argv[0]);
	printf("path1 = %s\n", argv[1]);

}

QProcess 控制台进程

QProcess启动控制台不显示窗口
QProcess *process  = new QProcess();
  QStringList paraList;
  paraList << "D:/AI_Segment";
process->setArguments(paraList);

process->start("D:/xx.exe");
注意:这里不能正常传参;
通过“cmd.exe”启动,可以显示控制台,方便输出信息
    QProcess *process = new QProcess();
    process ->start("cmd.exe");
    process ->write("cd /d D:/ && start xx.exe\n");
解决不能传参问题

使用 startDetached

QProcess *process  = new QProcess();
  QStringList paraList;
  paraList << "D:/AI_Segment";
process->setArguments(paraList);

process->startDetached("D:/xx.exe");

但这里方案无法,显示的显示控制台,无法看到哪个弹出的黑色控制台;

调用控制台,并传入参数 ,同时 显示控制台:

    QProcess *process = new QProcess();
 
    process ->start("cmd.exe" );
    process ->write("cd /d D:/ && start AI-SegmentEx.exe --xml\n");

接收控制台输出:

argc = 2
path0 = AI-SegmentEx.exe
pathl = --xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/211337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一、服务器准备

本案例使用VMware Workstation Pro虚拟机创建虚拟服务器来搭建Linux服务器集群&#xff0c;所用软件及版本如下&#xff1a; Centos7.7-64bit 1、三台虚拟机创建 第一种方式&#xff1a;通过iso镜像文件来进行安装(不推荐) 第二种方式&#xff1a;直接复制安装好的虚拟机文…

Linux多核飞控

Linux多核飞控是一种基于多核处理器构建的飞控系统&#xff0c;用于控制飞行器的飞行。这种飞控系统使用Linux操作系统作为主要的控制平台&#xff0c;可以支持多个处理器核心同时工作&#xff0c;以实现更高的性能和更快的响应速度。 Linux通常用于具有较高计算量和较大内存需…

ffmpeg 任意文件读取漏洞/SSRF漏洞 (CVE-2016-1897/CVE-2016-1898)

漏洞描述 影响范围 FFmpeg 2.8.x < 2.8.5FFmpeg 2.7.x < 2.7.5FFmpeg 2.6.x < 2.6.7FFmpeg 2.5.x < 2.5.10 漏洞环境及利用 搭建docker环境 访问8080端口看到上传界面 由于vulhub并没有讲述该漏洞如何复现&#xff0c;我们需要进入环境查看源码 <?php if(!…

vue3使用vue-router路由(路由懒加载、路由传参)

vue-router 是 vue的一个插件库 1. 专门用来实现一个SPA单页面应用 2 .基于vue的项目基本都会用到此库 SPA的理解 1) 单页Web应用&#xff08;single page web application&#xff0c;SPA&#xff09; 2) 整个应用只有一个完整的页面 3) 点击页面中的链接不会刷新页面, 本…

对于Kotlin DSL的简单解析与使用

DSL(领域特定语言)是Kotlin所带来的强大语法特性之一&#xff0c;也是Java中所不存在的功能&#xff0c;JetBrain也基于DSL开发出了众多的开源库&#xff0c;Kotlin的开发者可以使用DSL来重构许多已有的代码&#xff0c;甚至有可能做到彻底抛弃HTML&#xff0c;XML&#xff0c;…

【智能家居】一、工厂模式实现继电器灯控制

用户手册对应的I/O 工厂模式实现继电器灯控制 代码段 controlDevice.h&#xff08;设备设备&#xff09;main.c&#xff08;主函数&#xff09;bathroomLight.c&#xff08;浴室灯&#xff09;bedroomLight.c&#xff08;卧室灯&#xff09;restaurantLight.c&#xff08;餐厅…

2017年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题

文章目录 Section I Use of EnglishSection II Reading ComprehensionText 121-细节信息题22-细节信息题23-推断题24-细节信息题25-态度题 Text 226-细节信息题27-细节信息题28-细节信息题29-细节信息题30-细节信息题 Text 331-细节信息题32-细节信息题33-猜词题34-细节信息题3…

基于SSM的生鲜在线销售系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

初始数据结构(加深对旋转的理解)

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/rotate-array/submissions/ 与字…

python ping3库检测主机是否能ping通(ping命令)代码示例

文章目录 代码示例 代码示例 #!/usr/bin/env python3 # -*- coding: utf-8 -*-import ping3 import timeencoding utf-8def ping(host, time_out1):"""检查ip是否能被ping通&#xff0c;time_out为超时时间&#xff0c;单位为秒&#xff0c;默认为1秒"&q…

openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性

文章目录 openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性138.1 操作步骤 openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性 数据库事务一致性通过逻辑时钟保证&#xff0c;与操作系统时间无关&#xff0c;但是系统时间不一致会导致…

【C/C++笔试练习】公有派生、构造函数内不执行多态、抽象类和纯虚函数、多态中的缺省值、虚函数的描述、纯虚函数的声明、查找输入整数二进制中1的个数、手套

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;公有派生&#xff08;2&#xff09;构造函数内不执行多态&#xff08;3&#xff09;抽象类和纯虚函数&#xff08;4&#xff09;多态中的缺省值&#xff08;5&#xff09;程序分析&#xff08;6&#xff09;重载和隐藏&a…

函数指针和指针函数的讲解

文章目录 指针函数函数指针函数指针的定义与指针函数的声明的区别函数指针的定义指针函数的声明 typedef在函数指针方面的使用typedef和using 给函数指针的类型取别名typedef和using 给函数的类型取别名 指针函数 指针函数&#xff1a; 也叫指针型函数&#xff0c;本质上就是一…

VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集

《VBA数据库解决方案》教程&#xff08;版权10090845&#xff09;是我推出的第二套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;是学完字典后的另一个专题讲解。数据库是数据处理的利器&#xff0c;教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…

zabbix监控nginx

zabbix是什么 web界面提供的一种可视化的监控服务软件 以分布式的方式系统监控以及网络监控&#xff0c;硬件监控等等开源的软件 zabbix的架构 1、c/s模式 客户端和服务端&#xff0c;zabbix server服务端 zabbix agent 客户端 2、通过B/S B是浏览器 S服务端&#xff0c;通…

WEBAPI返回图片显示在VUE前端

WEBAPI部分 通过nuget安装Opencvsharp &#xff0c;这部分用来做图像处理 在controller中写如下方法&#xff0c;我要对原图进行旋转使用了Opencv&#xff0c;如果不需要旋转可以用注释的代码 [HttpGet(Name "ShowImage")]public async Task<IActionResult> …

广州华锐互动:数字孪生系统让生产工艺流程可视化,提高生产效率和质量

随着科技的飞速发展&#xff0c;数字化技术已经深入到各个行业&#xff0c;制造业也不例外。生产制造数字孪生系统作为一种新型的生产管理工具&#xff0c;正逐渐成为制造业的发展新趋势。 生产制造数字孪生系统是一种基于三维数字化技术的生产过程模拟与优化系统。通过对实际生…

【.net core 7】新建net core web api并引入日志、处理请求跨域以及发布

效果图&#xff1a; 1.新建.net core web api项目 选择src文件夹》添加》新建项目 输入框搜索&#xff1a;web api 》选择ASP.NET Core Web API 输入项目名称、选择位置为项目的 src文件夹下 我的项目是net 7.0版本&#xff0c;实际选择请看自己的项目规划 2.处理Progr…

Linux程序设计(下)

系列文章目录 文章目录 系列文章目录十、调试断言 十一、进程和信息号进程表进程调度启动新进程信号**信号处理****发送信号** 十二、POSIX线程线程创建线程同步线程属性取消一个线程pthread_exit, exit, _exit 十三、管道popen, pipe父子进程将管道用作标准输入和标准输出 命名…

mybatis多表查询(xml)

多表查询都用resultMap resultMap 说白了就是他可以手动设置映射参数&#xff0c;例如 可以指定 column代表数据库的参数 property 代表实体类的参数 <id column"roleid" property"id"></id> column代表数据库的参数 property 代表实体类…