2012-12-08 118 views
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 

任何人都知道爲什麼它不工作?謝謝。當它的標準輸出被重定向到一個管道

回答

2

SCP不會產生輸出:

scp src dest > out.txt

你會看到out.txt是空的。我不認爲你可以做很多事情。

+0

我懷疑是這樣的。你提到的這個之後,我做了搜索,SCP具有代碼: '如果(!isatty(STDOUT_FILENO)) showprogress = 0;' 所以,如果它不運行它的終端,就沒有輸出。 – dag