2013-11-14 91 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

相关问题