우분투 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
복사본은 쓰기 가능하므로 작동합니다.