2012-12-08 4 views
0

나는 리눅스에서 scp 명령을 실행하는 Qt의 QProcess를 사용하는 일부 C++ 코드를 가지고,하지만 난 과정에서 모든 출력 결코 :QProcess 출력

void CopyClass::CopyClass() 
{ 
    mpScpProcess = new QProcess(this); 
    connect(mpScpProcess, SIGNAL(finished(int)), this, SLOT(onCopyFinished(int))); 
    connect(mpScpProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(onReadCopyOutput())); 
} 

void CopyClass::startScp() 
{ 
    mpScpProcess->setProcessChannelMode(QProcess::MergedChannels); 
    mpScpProcess->start("scp 192.168.1.100:/file.txt ./"); 
} 

void CopyClass::onCopyFinished(int val) 
{ 
    qWarning("Copy Finished"); 
} 

void CopyClass::onReadCopyOutput() 
{ 
    QString output = mpScpProcess->readAll().data(); 

    qWarning("Output: %s", qPrintable(output)); 
} 

onCopyFinished가 호출되는, 그리고 scp를 복사 성공 , 출력은 나오지 않습니다 (onReadCopyOutput은 호출되지 않습니다). 하지만 다음과 같이 출력해야합니다.

file.txt          100% 1KB 1.9MB/s 00:00 

왜 작동하지 않는지 알 수 있습니다. 감사. 표준 출력은 파이프로 리디렉션 될 때

답변

2

SCP는 출력을 생성하지 않습니다

scp src dest > out.txt

당신은 out.txt이 비어있는 것을 볼 수 있습니다. 네가 할 수있는 일이 많지 않다고 생각해.

+0

나는 그것이 그런 것 같다고 생각했습니다. 당신이 언급 한 후에 나는 검색을했고 scp는 코드를 가지고있다 : 'if (! isatty (STDOUT_FILENO)) showprogress = 0; 그래서 그것이 실행되는 터미널이 아니면 출력이 없을 것이다. – dag

관련 문제