当前位置:   article > 正文

Qt开发(3)——linux下调用指令_qt执行linux命令

qt执行linux命令

目录

一.system

二.QProcess::start

三.QProcess::execute


一.system

调用Linux C函数库中的system

简单,方便

1.阻塞性

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

2.获取执行结果

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

返回值只表示成功与否

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

二.QProcess::start

1.阻塞性

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

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

2.执行结果

可以从程序中获取字符流

  1. #include <QProcess>
  2. QProcess process;
  3. process.start("ls",QStringList()<< "/usr/local");
  4. process.waitForFinished();
  5. // connect(&process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
  6. // [=](int exitCode, QProcess::ExitStatus exitStatus){ qDebug()<<"-----"; });
  7. QString result = process.readAllStandardOutput();
  8. qDebug()<<"result:\n" <<result;
  1. result:
  2. "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类似

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

返回值只表示成功与否

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42545
推荐阅读
相关标签
  

闽ICP备14008679号