C -内置命令来改变自定义linux/unix shell中的提示符



我已经看遍了谷歌,我发现如何在bash配置文件中更改,但我的项目需要一个内置命令来更改提示符。

我在任何函数外声明了char指针,我的命令修改了它,但是当函数返回(int继续do while循环)并再次显示提示符时,它是空白的。

我尝试过使用结构,联合,甚至第二个char指针,并得到了同样的问题。

我认为使用一个可以在任何函数中访问和修改的全局char指针将是我项目这部分的解决方案。

我很感激,并将尝试任何回应。

编辑:贴在我的手机上,试着问w/o代码,但在这里代码:

char *prmpt;
...
int main(int argc, char **argv)
prmpt="$$ ";
do
{
printf("%s ", prmpt);
}while(1)
int cmd_prompt(char **args)
{
 prmpt = (char*)args[1];
 return 1;
}

基本上需要使用fgetsgetline或更好的,但他们可能使用readlineeditline。下面是一个使用getline的例子:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char *prompt;
    size_t len = 256;
    size_t i = 0;
    if (!(prompt = malloc(256 * sizeof(char))))
        return 1;
    strcpy(prompt, "$");
    while ( 1 )
    {
        printf("[[%s]] ", prompt);
        i = getline(&prompt, &len, stdin);
        prompt[i-1] = '';
    }
}

或者如果您可能尝试使用getchar自己实现getline(可能如果getline在您的系统上不可用,或者您只是想知道它是如何工作的)。如果您继续对编写shell感兴趣,那么最终可以继续编写自己的editline库。

最新更新