如何在 Qt 中获取输出 system() 命令?

2024-02-21

我在 Qt 中使用 system() 命令。我想获得输出并将其显示给用户。 我的命令是:

system("echo '" + rootPass.toAscii() + "' | su - root -c 'yum -y install " + packageName.toAscii() + "'");

当我在 QProcess 中使用该命令时(启动或执行函数),该命令无法运行 但如果我可以在 QProcess 中运行这个命令,我可以得到输出QProcess::readAllStandardOutput()功能。

另外,当我在系统命令中使用“>”将输出保存在文件中时,当软件包完全安装后,我会收到输出。就像下面这样:

system("echo '" + rootPass.toAscii() + "' | su - root -c 'yum -y install " + packageName.toAscii() + "' > result.out");

有没有关于使用 QProcess 运行此命令的想法,或者在写入每一行后立即从 system() 命令获取输出。


您还可以直接从以下位置获取输出QProcess https://doc.qt.io/qt-5/qprocess.html

QProcess process;
process.start(/* command line stuff */);
process.waitForFinished(-1); // will wait forever until finished

QString stdout = process.readAllStandardOutput();
QString stderr = process.readAllStandardError();

如果您不想阻止事件循环,则可以随时使用信号:

readyReadStandardOutput();
readyReadStandardError();

然后调用一个函数readAllStandard[Output/Error]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Qt 中获取输出 system() 命令? 的相关文章

随机推荐