0
我有一個使用Qt的QProcess中運行在Linux中的scp命令一些C++代碼,但我從來沒有從進程的任何輸出:另外,QProcess輸出沒有顯示
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
任何人都知道爲什麼它不工作?謝謝。當它的標準輸出被重定向到一個管道
我懷疑是這樣的。你提到的這個之後,我做了搜索,SCP具有代碼: '如果(!isatty(STDOUT_FILENO)) showprogress = 0;' 所以,如果它不運行它的終端,就沒有輸出。 – dag