我正在尝试执行这样的命令:
wget --user=abc --ask-password https://xxxxx.com/file.zip
然后我必须提供密码。
此代码应处理它:
connect(&checkFW, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput()));
//QString command = "wget --user=abc--ask-password https://xxxxxxx.com";
//checkFW.start("sh",QStringList() << "-c" <<"cd ;"+command);
checkFW.start("wget", QStringList() << "--user=abc" << "--ask-password"<< "https://xxxxxx.com/file.zip");
if (!checkFW.waitForStarted()){
qDebug()<<"Could not start ";
return false;
}
QString cmd = "password\n";
checkFW.write(cmd.toLatin1());
checkFW.waitForFinished(5000);
QByteArray result = checkFW.readAll();
QString mystr(result);
qDebug()<<"output:"<< mystr;
我曾多次使用QProcess,但这次我无法设法使用它。一些建议?我尝试了不同的methotds和任何回应。当然我没有下载我要求的文件。
我再次检查并将文件下载到/ home目录,而不是app目录。所以它有效,但没有输出。
答案 0 :(得分:0)
您正在以错误的方式将参数传递给QProcess。
checkFW.start("wget", QStringList() << "--user=abc" << "--ask-password"<< "https://xxxxxx.com/file.zip");
这是ping(Windows)的示例。
#include <QCoreApplication>
#include <QProcess>
#include <QDebug>
int main(int argc, char *argv[])
{
QProcess proc;
QStringList args;
args << "google.com";
args << "-n";
args << "3";
proc.start("ping", args);
proc.waitForFinished();
qDebug() << proc.readAllStandardOutput();
}
答案 1 :(得分:0)
如果您只输入:
checkFW.setProcessChannelMode(QProcess::MergedChannels);
之前:
checkFW.start();
即使错误也将在stdout中获得所有输出