qprocess:execute 执行带管道的shell 输出结果怎么获取

qprocess:execute 执行带管道的shell 输出结果怎么获取,第1张

不用静态函数execute,用QProcess里的成员函数可以做到。

先start

再write

然后readAllStandardOutput和readAllStandardError就可以读到输出了。

本文介绍,在Linux环境下,使用Qt中的 QProcess 类执行shell命令并获取输出。

头文件: #include <QProcess>

一、函数接口

QProcess 类提供了三个函数

二、执行命令

这里主要介绍 execute() 和 start() :

execute() 会将命令输出直接打印到控制台,调用程序无法捕获。

调用程序可通过 readAllStandardOutput() 捕获shell命令的输出

三、管 道

对于shell命令中的 | ,直接传入参数是不行的。

以上的方式是无法执行的。

可以将整个命令作为 sh 的参数传入 或 使用 QProcess::setStandardOutputProcess(QProcess *destination) 即将一个进程的标准输出流传入目标进程的标准输入流

对于需要sudo权限的命令,需要使用sudo权限打开qtcreator,或者直接在命令前加上sudo(不建议)。

当然, QProcess 不仅仅可以执行shell命令,也可以用于执行调用外部程序。

你是用p.getInputStream()获取调用程序的输出流的,这是正常信息的获取方法,还有异常信息的输出流,要用p.getErrorStream(),不过如果你要"同时"读取两个流的信息并显示出来,单线程肯定是不行的,要采用多线程的方式


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12202430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存