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