2017-11-20 6 views
0

작동하지 않습니다.QProcess 내가이 같은 명령을 실행하는 것을 시도하고있다 "wget을"

이 코드는 그것을 처리해야

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을 여러 번 사용하지만 관리 할 수있는이 시간은 작동 할 수 있습니다. 몇 가지 제안? 나는 다른 메토츠와 어떤 반응을 시도했다. 물론 내가 요청한 파일은 다운로드되지 않았습니다.


다시 확인했는데 파일이 앱의 디렉토리가 아닌/home 디렉토리에 다운로드되었습니다. 작동하지만 출력이 없습니다.

+0

'wget'이 프로세스의 표준 입력에서 암호를 읽는다고 가정합니다. 나는 그것이 사실이 아니라고 생각한다. 'wget'은 아마 패스워드를 가져 오기 위해 ['getpass'] (https://linux.die.net/man/3/getpass)와 같은 것에 위임합니다. 그러면 차례대로'/ dev/tty'에 명시 적으로'open'을 수행하고 표준 입력보다는 읽기를 할 것입니다. –

답변

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(); 
} 
+0

죄송합니다. 그것이 범인이 아닙니다. 나는 논쟁의 순서를 바꾸고 여전히 응답이 없다. – RobertLT