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
なぜそれが機能しないのか誰もが知っていますか?ありがとう。