我正在尝试用 C 语言为学校项目编写一个迷你 shell,我想做的是做一种命令历史记录(就像在 shell 中一样),当我按下 UP 键时,它将先前的输入写入输入部分, DOWN 则相反,等等...,您可以在按 Enter 之前对其进行编辑以将其发送到程序,如下所示(抱歉英语不好): [] 代表用户光标
my_shell$ some input wrote by me
my_shell$ []
my_shell$ some other input
my_shell$ []
and now if I press UP
my_shell$ some other input[]
If I press UP again
my_shell$ some input wrote by me[]
我可以使用 termcaps 和其他一些功能isatty, ttyname, ttyslot, ioctl, getenv, tcsetattr, tcgetattr, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs
。
问题是我无法理解ioctl
和tty
函数的文档,也找不到关于这些函数的详细解释的示例教程,也找不到我正在尝试使用它们的文档。
有人可以以一种可以理解的方式向我解释这些功能吗?以及我应该如何将它们应用于我正在尝试做的事情(我正在寻找一种 Linux-MacOs 兼容方式)感谢您的帮助。