Qt开发(3)——linux下调用指令

目录

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值