Выход QProcess не отображается

У меня есть некоторый код C ++, который использует QProcess Qt для запуска команды scp в Linux, но я никогда не получаю никакого вывода от процесса:

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

Кто-нибудь знает, почему это не работает? Благодарю.

0

Решение

scp не генерирует вывод, когда его стандартный вывод перенаправляется на канал:

scp src dest> out.txt

Вы увидите, что out.txt пустой. Я не думаю, что вы многое можете с этим поделать.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]