readline 라이브러리에 대해 알아보자:)
dqQQQ
·2023. 11. 26. 19:31
개요
minishell 과제에서 필요한 readline 라이브러리에 대해 알아보고 라이브러리에 있는 함수들에 대해 알아보고 컴파일 방법에 대해 알아보겠다.
라이브러리
readline 라이브러리는 GNU에서 만든 라이브러리로 입력 자동 완성, 커서 이동, 잘라내기, 복사, 붙여넣기 등의 기능을 지원하는 줄 편집 및 입력 기록 저장등의 역할을 하는 라이브러리이다.
헤더 선언
#include <readline/readline.h>
#include <readline/history.h>
위와 같은 형식으로 사용한다.
컴파일 방법
-lreadline
컴파일 옵션을 사용해야 한다.
컴파일 에러
rl_replace_line을 사용할 수 없다고 에러가 나올 수 있다.
readline 라이브러리는 2가지가 존재하는데 Mac 버전, GNU Library 버전이 있는데 위의 컴파일 옵션을 사용하면 Mac 버전 라이브러리를 사용하기 때문에 추가적으로 옵션을 줘야한다.
GNU readline 설치
brew install readline
GNU readline 정보 확인
brew info readline
정보 확인을 하면 readline 라이브러리를 사용하기 위한 플래그옵션과 설치 위치가 나온다.
그대로 복붙하여 사용하면된다.
함수
readline
함수 원형
: char *readline(const char *);함수 라이브러리
: #include <readline/readline.h>const char *
: 출력할 문자열리턴값
: 개행을 받기전까지의 문자열설명
: 매개변수로 들어온 문자열을 출력하고 개행을 받기전까지 표준 입력받은 값을 반환해주는 함수
사용 예시
int main(){
char *line;
line = readline("input> ");
printf ("%s", line);
}
add_history
함수 원형
: int add_history(const char *);함수 라이브러리
: #include <readline/history.h>const char *
: 기록할 문자열설명
: 이전에 입력한 문자열을 기록하는 함수
사용 예시
int main(){
char *line;
while(1){
line = readline("input> ");
printf ("%s\n", line);
add_history(line);
}
}
rl_on_new_line
함수 원형
: int rl_on_new_line();함수 라이브러리
: #include <readline/readline.h>설명
: 다음 줄로 옮기는 함수, rl_redisplay를 사용하기 위해 필요함
rl_replace_line
함수 원형
: void rl_replace_line(const char str*, int);함수 라이브러리
: #include <readline/readline.h>설명
: 파라메터의 문자열로 치환한다.
rl_redisplay
함수 원형
: void rl_redisplay(void);함수 라이브러리
: #include <readline/readline.h>설명
: readline을 다시 뿌려주는 함수
'42Seoul' 카테고리의 다른 글
signal 함수와 인터럽트에 대해 알아보자:) (0) | 2023.11.26 |
---|---|
환경변수에 대해서 알아보자:) (0) | 2023.11.26 |
정렬된 스택을 만들기 위한 명령어들을 만들어보자:) (0) | 2023.11.26 |
터미널에서 미니 게임을 구현해보자:) (0) | 2023.11.26 |
터미널에서 미니 대화창을 구현해보자:) (0) | 2023.11.26 |