目录
一.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:
""