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]
你要执行的是一个shell命令。您需要将其传递给外壳。使用 QProcess 运行以下命令:
/bin/bash -c "your_command | with_pipes > and_redirects"
Run Code Online (Sandbox Code Playgroud)