【发布时间】:2021-06-17 18:20:23
【问题描述】:
我正在尝试用 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 兼容方式) 感谢您的帮助。
【问题讨论】: