我正在开发一个小 shell,并使用 libreadline 来获取命令输入。
问题
- 当我使用 C-W 时,我的命令提示符被删除了
注意这只发生在我输入一个单词然后按 C-W,C-w 后立即不会删除提示。
来源
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <stdlib.h>
#include <string.h>
int ash_loop(void)
{
char *line = 0;
while(1)
{
// this is the current prompt - i dont want it to be deletable..
printf("ash$ ");
line = readline(0);
if(!line)goto err0;
printf("line: %s\n", line);
free(line);
break;
}
return 0;
err0:
return 1;
}
int main(int argc, char *argv[])
{
int rc;
rc = ash_loop();
return rc;
}
示例会话
$ ./ash
line:
我在这里输入单词,然后输入 C-W。
如何保留提示?
您想使用提示参数
readline()
:
line = readline("ash$ ");