0
私が作成したシェルに自動補完を追加したいと思います。私はコード全体を入れることができませんでしたが、私のシェルが動作していることを伝えることができます! 私はreadline関数を使って自動補完を実装しようとしましたが、その結果はそれほど良くありませんでした(私が試した解説のコードを参照してください):自動補完は機能しますが、問題は次のとおりです: 1. 2回押す今すぐ実行されるコマンドを取得します。 2.コマンドを実行するには、 "ls"のようなコマンドを2回入力する必要があります。これを解決する手助けはできますか?ありがとう:)自動補完がうまくいかない(readline.h)
#include <readline/readline.h>
#include <readline/history.h>
#include <stdlib.h>
#include <stdio.h>
#include "includes/ft_sh1.h"
int main(int ac, char **av, char **envp)
{
char *line;
t_env *e = NULL;
char *add;
if (!(e = (t_env *)malloc(sizeof(t_env))))
return (0);
e->envp = env_cpy(envp, 0, 0);
init_env(e);
while (1)
{
--> My question is only about this part below <--
ft_printf("shell$> ");
// add = readline("shell ");
// add_history(add);
// printf("%s", add);
--> My question is only about this part above <--
get_next_line(0, &line);
get_pwd_env(e);
e->cmd = get_cmd(e, line);
if (ft_strcmp(line, "exit") == 0)
exit(0);
else if (ft_strncmp(e->cmd[0], "cd", 2) == 0)
cd_cmd(e);
else
ft_execute(av, line, e);
}
}