目录

一.system

二.QProcess::start

三.QProcess::execute


一.system

调用Linux C函数库中的system

简单,方便

1.阻塞性

阻塞进程,直到指令运行结束

2.获取执行结果

指令执行得到的内容会打印在控制台,无法在程序中获取,

返回值只表示成功与否

int ret = system("lsb_release -d");
qDebug()<<"ret:" <<ret;
Description:	Ubuntu 20.04.5 LTS
ret: 0

二.QProcess::start

1.阻塞性

start是非阻塞函数,但是这里的waitForFinished是阻塞的

有时也可以和connect  finished联合使用

2.执行结果

可以从程序中获取字符流

#include <QProcess>

QProcess process;
process.start("ls",QStringList()<< "/usr/local");
process.waitForFinished();
//    connect(&process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
//        [=](int exitCode, QProcess::ExitStatus exitStatus){  qDebug()<<"-----"; });
QString result = process.readAllStandardOutput();
qDebug()<<"result:\n" <<result;
result:
 "bin\ncuda\ncuda-12\ncuda-12.1\ndoc\netc\ngames\ninclude\nlib\nman\nmysql-connector\nmysql-connector-c++-8.0.30-linux-glibc2.27-x86-64bit\nsbin\nshare\nsrc\nTensorRT7\nTensorRT-7.2.3.4\nTensorRT8\nTensorRT-8.2.1.8\n"

三.QProcess::execute

1.阻塞性

execute是阻塞的

execute()=start()+waitforFinished()

2.执行结果

与system类似

指令执行得到的内容会打印在控制台,无法在程序中获取,

返回值只表示成功与否

QProcess process;
int ret = process.execute("lsb_release",QStringList()<< "-d");
process.waitForFinished();
QString result = process.readAllStandardOutput();
qDebug()<<"ret:" <<ret;
qDebug()<<"result:\n" <<result;
Description:	Ubuntu 20.04.5 LTS
QIODevice::read (QProcess): device not open
ret: 0
result:
 ""

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐