关于命令行独占的应用程序
大家好,想问一下独占终端的问题,目前完全没有头绪。
类似于mysql的命令行程序,执行mysql -u root -p 密码,最后就进入了独占于终端的mysql进程里,用golang如何实现,或者c++,python等其他语言是如何做到的?(发现c++和python开发的好多终端工具都有这效果)
说一个大概也是可以的,主要是现在完全没有头绪。先感谢各位大神了
回答:
这个其实是一个c库 readline 实现到,包括bash
,ftp
,gdb
等著名命令行程序均由它提供支持。
回答:
参考
https://segmentfault.com/q/10...
回答:
很简单,照着这个做就行了:
https://github.com/abiosoft/i...
回答:
这个要做到其实是很简单的,当然要做到精细同样不简单。
mysql
客户端(也就是你所说的独占的命令行
的典型代表)与类似ls
之类的程序比较大的区别就是,mysql客户端的进程是一致存在的,而ls的进程是立马结束的。换句话说,mysql客户端程序是带有上下文(如先输入了use db0;
,再输入show tables;
,这两条指令之间是有上下文关系的)的,在你输入完一条指令后进程并未退出,它在等待你输入下一条指令。
你所看到的每行起始位置的mysql>
,其实是mysql客户端自己向屏幕输出的字符,为的就是模拟shell下的PS1
。因此,要做到你所谓的独占的命令行
,起码要做到这么两点:
- 进程不要退出,只有读取到用户输入的
exit
命令时才能让进程退出。 - 向屏幕输出
PS1
,当然这个不是真的PS1
,当然内容是什么由你决定。
以上是 关于命令行独占的应用程序 的全部内容, 来源链接: utcz.com/p/182108.html