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

2023-12-03 00:44

本文主要是介绍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

这篇关于QProcess 启动 进程 传参数 启动控制台进程 传参的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/447472

相关文章

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务