当前位置:  开发笔记 > 编程语言 > 正文

处理linux上的用户输入

如何解决《处理linux上的用户输入》经验,为你挑选了0个好方法。

我正在努力在linux上创建一个简单的shell.我可以创建一些东西来学习如何使用基本系统调用.

场景:命令中的用户类型,按Tab键(因此shell自动完成其命令),弹出自动完成的命令(或建议),用户按Enter键,命令evals并执行.

就像在bash中一样.

我已经想出如何进行evals,将命令转换为标记,使用管道和东西执行它.我无法弄清楚的是输入部分.即那些标签击键.

我知道我有什么选择:

getc() - 分别获取每个字符,将其存储在缓冲区中.无法弄清楚如何获得Tab键击,因为它会暂停执行,直到它看到'\n'或Ctrl + D. 有点贵,因为命令中的每个字符都会有1个getc().另外,我将不得不处理缓冲区重新分配,摊销......嘘......

scanf("%s") - 太担心缓冲区溢出.我不能得到那些标签击键.暂停执行

read()(来自unistd.h) - 可能是我不想做的事情.但是我看到这里的人说使用它来做这件事真的很痛苦.我检查了.它是.

getline() - 无法获得Tab键击.

我查看了bash源代码,看看它是如何处理输入的,以及OH MY GOD.有450行代码专门用来做这个简单的事情(input.c文件).

真的没有比这更简单的解决方案吗?我不想使用ncurses,我不关心可移植性,我只是想实现一个目标:获取用户输入并知道他何时按Tab键.尽可能少地努力,优雅地做到这一点.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有