【发布时间】:2016-06-08 09:06:39
【问题描述】:
我目前正在开发一个用 C 语言构建的完整 shell。
我想通过我的双链表使用箭头键实现 bash 历史记录和导航,但我在使用 TermCaps 时遇到了一些问题
设置read()函数。
这是我设置终端的方式:
static int set_terminal_mode(t_shell *shell, const int mode)
{
char *term_name;
if (mode == 0)
{
if ((term_name = getenv("TERM")) == NULL)
return (-1);
ioctl(0, TCGETS, &shell->term);
shell->term.c_lflag &= ~ICANON;
shell->term.c_cc[VMIN] = 1;
shell->term.c_cc[VTIME] = 0;
ioctl(0, TCGETS, &shell->term_save);
ioctl(0, TCSETS, &shell->term);
}
if (mode == 1)
ioctl(0, TCSETS, &shell->term_save);
return (0);
}
我可以在按下左键或右键时捕捉到,然后我使用\r 擦除该行(这实际上不起作用)但主要问题是我不能再使用返回键了(只显示@987654324 @)
我该如何解决这个问题?
【问题讨论】: