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
왜 작동하지 않는지 알 수 있습니다. 감사. 표준 출력은 파이프로 리디렉션 될 때
나는 그것이 그런 것 같다고 생각했습니다. 당신이 언급 한 후에 나는 검색을했고 scp는 코드를 가지고있다 : 'if (! isatty (STDOUT_FILENO)) showprogress = 0; 그래서 그것이 실행되는 터미널이 아니면 출력이 없을 것이다. – dag