qt执行终端命令_Qt模拟Linux终端Terminal与系统交互(QProcess)

最近在搞一个数据库备份和恢复的工具,想在自己的程序里显示过程,即将gnome-ternimal的打印信息输出到我的程序里。因为要和ternimal交互,自然就想到用QProcess启用终端然后互相开始对话交互。但其中遇到的一些问题网上查了很久才最后解决,由于网上的答案并不是现成的,需要自己理解后才能有思路解决,所以在这里把我的思路过程分享出来,避免后人再踩坑。

认识真实的gnome-ternimal

看这篇文章的绝大多数都想直接调用Linux的命令,但不想用QProcess启动ternimal时看到终端的界面。其实。。。。你的思路错了!!!!

gnome-terminal这个终端也是一个程序,就和你自己即将要开发的Qt程序一样,有GUI界面。但其实你输入命令后,这个terminal会调用Linux系统函数。例如,你输入ls命令,terminal程序接受后会执行system(char* c)函数。system(char* c)函数属于标准库中的函数,用来和系统内核(windows/Linux)进行交互。

市面上有很多终端,有gnome-terminal(CentOS自带)、xFace等,就像通讯软件有QQ、微信等,他们不是Windows/Linux系统级别的组件,而是方便人们和系统交互而开发出来的可视化程序。

所以你要开发一个终端?这是件很复杂的事。

首先,一般的终端都会自动识别输入内容是程序还是退出等。例如输入“mysql -uroot -p123456”就是启动mysql;输入“ls”就是显示当前列表下的文件信息,而不是启用一个叫“ls”的程序。这是如何实现的呢

你可能感兴趣的:(qt执行终端命令)