关于命令行独占的应用程序

图片描述

大家好,想问一下独占终端的问题,目前完全没有头绪。
类似于mysql的命令行程序,执行mysql -u root -p 密码,最后就进入了独占于终端的mysql进程里,用golang如何实现,或者c++,python等其他语言是如何做到的?(发现c++和python开发的好多终端工具都有这效果)
说一个大概也是可以的,主要是现在完全没有头绪。先感谢各位大神了

阅读 3.6k
4 个回答

这个其实是一个c库 readline 实现到,包括bash,ftp,gdb等著名命令行程序均由它提供支持。

这个要做到其实是很简单的,当然要做到精细同样不简单。

mysql客户端(也就是你所说的独占的命令行的典型代表)与类似ls之类的程序比较大的区别就是,mysql客户端的进程是一致存在的,而ls的进程是立马结束的。换句话说,mysql客户端程序是带有上下文(如先输入了use db0;,再输入show tables;,这两条指令之间是有上下文关系的)的,在你输入完一条指令后进程并未退出,它在等待你输入下一条指令。

你所看到的每行起始位置的mysql>,其实是mysql客户端自己向屏幕输出的字符,为的就是模拟shell下的PS1。因此,要做到你所谓的独占的命令行,起码要做到这么两点:

  • 进程不要退出,只有读取到用户输入的exit命令时才能让进程退出。
  • 向屏幕输出PS1,当然这个不是真的PS1,当然内容是什么由你决定。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏