0

我有一些使用 Qt 的 QProcess 在 Linux 中运行 scp 命令的 C++ 代码,但我从未从该进程中获得任何输出:

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

有谁知道为什么它不起作用?谢谢。

4

1 回答 1

2

scp 在其标准输出被重定向到管道时不生成输出:

scp src dest > out.txt

你会看到它out.txt是空的。我认为您对此无能为力。

于 2012-12-08T01:37:12.877 回答