2013-11-14 134 views
1

我可以通過從我的QT代碼執行此操作來打開終端:QT可以打開一個Linux終端,然後寫入它嗎?

QProcess過程;

process.start(「xterm」); process.waitForFinished(-1);

但後來我想不出如何寫命令給它?

我需要這樣做,因爲我希望我的應用程序能夠SSH設備,然後在登錄後編寫命令並查看輸出。

我也接受其他解決方案!

感謝

回答

1

QProcess中有一個寫命令,但你不希望被調用waitForFinished。

QProcess proc; 
proc.start("xterm"); 
proc.waitForStarted(); 
proc.write(someData, dataSize); 

如果想從終端響應,時隙連接到readyRead()信號

// Qt 5 syntax 
connect(proc &QProcess::readyRead, this, &MyClass::readData()); 

然後調用的從READDATA槽函數的讀取功能,如readAll()之一。

+0

對不起,對於遲到的答案。 我試了你的建議,但我得到這個錯誤運行你的代碼: QProcess:當進程仍在運行時銷燬。 – user2992866

+0

您需要動態分配進程(QProcess * proc = new QProcess),並在適當的時候刪除它,也許通過鏈接到finished()信號並調用deleteLater()。我按照你的問題中的示例代碼將它分配到堆棧上。 – TheDarkKnight

+0

感謝它修復了這個錯誤。但是,例如proc-> write(「pwd」)不會寫入終端。 – user2992866

相關問題