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 に答える