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

moh*_*iri 5 qt system qprocess

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

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

此命令无法运行,当我在QProcess中(启动或执行功能)使用它,但如果我能在QProcess中运行此命令我可以用得到的输出QProcess::readAllStandardOutput()功能.

当我在系统命令中使用">"将输出保存在文件中时,我会在完全安装包时收到输出.像轰鸣声:

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

有什么想法用QProcess运行这个命令,或者在写入每一行时从system()命令获得输出.

Tyl*_*eau 23

您也可以直接从中获取输出 QProcess

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

QString stdout = process.readAllStandardOutput();
QString stderr = process.readAllStandardError();
Run Code Online (Sandbox Code Playgroud)

如果您不想阻止事件循环,可以始终使用信号:

readyReadStandardOutput();
readyReadStandardError();
Run Code Online (Sandbox Code Playgroud)

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


Pav*_*hov 1

你要执行的是一个shell命令。您需要将其传递给外壳。使用 QProcess 运行以下命令:

/bin/bash -c "your_command | with_pipes > and_redirects"
Run Code Online (Sandbox Code Playgroud)