【发布时间】:2011-09-01 01:30:36
【问题描述】:
我必须实现一些 CLI 功能,现在我正在尝试使用 readline() 以便用户可以编辑或执行他们的命令。到目前为止,它的工作原理是它允许用户输入他们的命令并滚动浏览历史记录。当用户尝试编辑命令时。光标以某种方式设法传递命令并进入提示,例如 "desktop r1234|5$: ls" 其中 "desktop r12345(sp)$:" 是显示工作目录和根目录的提示符;和“|”是光标。光标应该停在 '$' 和 'ls' 之间,即 "desktop r12345$:| ls" 。showWrkngDir() 方法只是像普通终端一样显示提示。
int main (int argc, char * argv[])
{
showWrkngDir();
static char *line_read = (char *)NULL;
using_history();
rl_readline_name = basename(argv[0]);
if (line_read)
{
free (line_read);
line_read = (char *)NULL;
}
while(strcmp((line_read = readline ("")) , "EXIT") != 0)
{
if (line_read && *line_read)
add_history (line_read);
tokenize(line_read);
showWrkngDir();
}
return 0;
}
void showWrkngDir()
{
char curDir[MAX_COMMAND_SZ];
char *env;
getcwd(curDir, sizeof(curDir));
env = (char *)getenv("USER");
printf("%s ",basename(curDir));
printf("%s(sp)$ ", env);
}
【问题讨论】:
标签: c history edit readline prompt