所以我必须用C写一个基本shell用于学校,没有管道,没有重定向,我只需要执行binarys并编写一些内置代码。
我已经完成了大部分工作,但现在我想实现一些键盘快捷键,比如ctrl + L来清除屏幕,上/下来浏览命令历史记录,ctrl + D来退出shell等等。
问题是,我不知道如何在用户不按回车的情况下阅读输入。
另外我应该提一下,我只能使用一个非常有限的功能面板,我可以用来读取输入的唯一功能是系统调用read()。
如果有人有想法那就很棒
答案 0 :(得分:2)
通常使用readline
库来读取输入。它支持定义快捷方式,历史记录,自动完成,......并且用于此目的。
如果您不被允许使用它,我想您的老师希望您专注于任务的重要部分而不是花哨。
如果您只想玩一下,可以使用rlwrap
命令启动shell:
rlwrap your_shell
rlwrap
可用于向从stdin读取的任意命令添加readline功能。