首页 > 编程语言 >【代码片段】Qt6.2.4 QProcess使用(打开外部程序,运行命令,同步、阻塞方式)

【代码片段】Qt6.2.4 QProcess使用(打开外部程序,运行命令,同步、阻塞方式)

时间:2022-09-23 22:45:05浏览次数:81  
标签:Qt6.2 外部 程序 主程序 片段 QProcess 阻塞 进程

参考

QProcess类

QProcess类是Qt中专门用于启动一个外部程序进程并与主程序通信的。此类中包含多个静态函数和信号,可以方便地通过信号与槽机制实现信息互通。
我们要实现快速调用外部程序,常用的有三个接口函数:
QProcess::execute(): 此函数是以阻塞的方式打开外部程序,只有外部程序执行完成后,主程序才会继续执行。外部程序的标准输出、标准错误都是重定向到主程序的标准输出和标准错误的。
QProcess::start(): 此函数是以子进程的 方式打开外部程序的,外部进程与主程序互不干扰,但外部进程的父进程就是主程序。
QProcess::startDetached(): 此函数是以分离的方式打开外部程序的,外部程序与主程序互不干扰,外部进程的父进程是系统的init进程。

代码

同步等待命令行返回

    QProcess process(this);
    process.setProgram("cmd");
    //
    QStringList argument;
    argument << "/c" << " arp -a";
    //
    process.setArguments(argument);
    process.start();
    process.waitForStarted(); //等待程序启动
    process.waitForFinished();//等待程序关闭

    QByteArray qbt = process.readAllStandardOutput();
    QString msg = QString::fromLocal8Bit(qbt);
    qDebug() << msg;

非阻塞子进程方式

    /**
     * 子进程方式(非阻塞)
     * */
    QProcess *myProcess = new QProcess(this);
    QStringList  arguments;
    arguments << "arp -a";
    myProcess->start("cmd.exe", arguments);

标签:Qt6.2,外部,程序,主程序,片段,QProcess,阻塞,进程
From: https://www.cnblogs.com/xiaqiuchu/p/16724571.html

相关文章