我有一些C ++代码使用Qt的QProcess在Linux中运行scp命令,但我从来没有从过程中获得任何输出:
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 :(得分:2)
当标准输出被重定向到管道时,scp不会生成输出:
scp src dest > out.txt
您会看到out.txt
为空。我认为你无能为力。