readline (rl_prep_terminal) 사용법 질문
글쓴이: yeilho / 작성시간: 금, 2008/01/11 - 6:35오전
readline을 사용하려고 하는데 잘 안되는 군요.
아래와 같이 간단한 프로그램이 있는데, 요는 rl_prep_terminal()을 호출을 하면 바로 Seg fault가 나오는 군요.
아마도 또 다른 셋팅을 해 주어야 하는것 같은데 정보를 잘 못찾겠네요.
혹시 어떻게 문제를 풀어야 할지 아시는분 있으시면 답변 부탁드립니다.
감사합니다.
일호 <><
#include <stdio.h> #include <stdlib.h> #include <readline/readline.h> int main(int argc, char*argv[]) { char *line; rl_prep_terminal(0); while (1) { line = readline("#"); if (!line) break; printf("%s", line); free(line); } rl_deprep_terminal(); return 0; }
Forums:
[완료] rl_instream
이래 저래 gdb로 디버깅 하다보니 rl_prep_terminal()이 fileno()를 호출 하는데 여기서 문제가 있다는것을 찾았습니다.
요는 전달하는 인자가 초기화 되어 있지 않아서 문제를 일으켰는데, 궁금한것은 전달 인자는 readline() 내부에서 사용하는 변수인데 왜 초기화 안되었는지 모르겠네요.
어찌 되었든 해당 변수 rl_instream 를 extern으로 선언하고 제 프로그램에서 초기화 유무 확인한 후, 제가 직접 초기화 시키니 제대로 동작하네요. ;-)
혹시 다른 식으로 문제를 해결하신 경험이 있으시면 조언 부탁합니다.
Linux rules!!!
Linux rules!!!
댓글 달기