赞
踩
目录
调用Linux C函数库中的system
简单,方便
1.阻塞性
阻塞进程,直到指令运行结束
2.获取执行结果
指令执行得到的内容会打印在控制台,无法在程序中获取,
返回值只表示成功与否
- int ret = system("lsb_release -d");
- qDebug()<<"ret:" <<ret;
- Description: Ubuntu 20.04.5 LTS
- ret: 0
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"
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:
- ""
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。