readlineのrl_parse_and_bindがクラッシュする

readlineのrl_parse_and_bindがクラッシュする

Ubuntu 18.04.5を使用しています。この非常に単純なプログラムは、呼び出されるとsegfaultを発生させますrl_parse_and_bind。誰が私を助けることができますか?

// Build with cc read.c -o read -lreadline

#include <readline/readline.h> // apt install libreadline-dev

int main() {
    rl_parse_and_bind("\"C-b\":history-search-backward");
    char *input = readline("Input: ");
}

ベストアンサー1

その理由は、readline図書館が積極的に修正この文字列は、strtok渡した文字列と一緒に使用します。定数です。ここに書き込もうとすると、分割エラーが発生します。

努力する:

char *copy = strdup("\"C-b\":history-search-backward");
rl_parse_and_bind(copy);
// free(copy); copy = NULL; // This to tidy up things

コピーは書き込み可能なので動作します。

おすすめ記事