profile
늅늅

[minishell] 구현

Minishell > C를 활용해 bash의 일부분을 구현해보는 과제. 파트를 크게 5가지로 나누어 팀원인 jiwolee님과 각각 역할을 나누어 수행했습니다. 저는 tokenizer, built-in, signal, 특수문자 파트를 맡아 수행하였습니다. Minishell 구조 > tokenizer 환경변수처럼 해석이 필요한 문자를 해석하고 문자열을 의미있는 토큰으로 나누어 변환한 뒤 필요한 형태로 가공하여 parser로 전달한다. >> 이때 환경변수, 쌍따옴표, 홑따옴표, whitespace, 특수문자 등에 대한 처리를 잘 해주어야 이후 편하게 처리가 가능하다. > parser 토큰을 구조를 가진 구문트리(syntax tree)로 변환한다. → here-documantaion << executor 구문 트리에 맞게 명령을 실행한다. → redirection → pipe 생성 및 fork 자식프로세스 생성 → c

2022년 10월 25일
·
0개의 댓글
·

[minishell] Builtin 함수

Builtin 함수 cd > 현재 작업 디렉토리를 절대경로, 상대경로 등 을 사용해 이동시켜주는 명령어 > minishell 요구사항 옵션없이 절대, 상대경로만을 사용할 수 있어야함 예시 \> cd ../ 상위 디렉토리로 이동 \> cd ./ 현재 디렉토리로 이동 \> cd Home 디렉토리로 이동 \> cd~ Home 디렉토리로 이동 \> cd JJEON/minishell JJEON 디렉토리의 minishell 디렉토리로 이동 echo > 받은 인자들을 출력해주는 명령어, -n옵션 사용 시 줄바꿈을 출력하지않음 minishell 요구사항 -n 옵션만을 지원하는 echo 예시 \> echo > \> echo asd asd \> echo -n asd asd\> \> echo -n -n -n asd asd\> \> echo -nnn -n -n asd asd\> \> echo -n -nnn -nm asd -nm

2022년 10월 21일
·
0개의 댓글
·

[minishell] 시그널 처리

조건 > ctrl-C, ctrl-D and ctrl-\\ should have the same result as in bash. > ctrl-C, ctrl-D, ctrl-\\ 는 bash와 동일하게 동작하여야 합니다. > When interactive: > 상호작용이 가능할 때: > ctrl-C print a new prompt on a newline. > ctrl-C는 새로운 줄에 새로운 프롬프트를 출력합니다 ctrl-C는 cat, grep등으로 정지된 상태에서 ^C를 출력하고 줄바꿈뒤 새로운 프롬포트를 출력합니다 ctrl-C는 버퍼에 문자가 있는 상황에서는 버퍼를 지우고 새로운 프롬포트를 출력합니다 > ctrl-D exit the shell. > ctrl-D는

2022년 9월 23일
·
0개의 댓글
·

[minishell] 사용 가능 함수 정리

readline 인자 *str : 프롬포트에 출력할 문자열 기능 str을 출력하고 프롬포트에서 표준입력으로 문자열을 입력받고 입력된 문자열을 반환 입력이 완료되기 전 까지는 다음 코드로 진행되지않음 반환값 저장공간을 동적할당하고 입력받은 문자열을 저장하여 반환함 주의사항 -lreadline 라이브러리를 링크해주어야 함 반환받은 문자열은 사용 후 저장공간 할당을 해제해주어야 함 rlonnew_line 인자 없음 기능 알림형태 함수 readline 디렉토리에서 update관련 함수들에게 커서가 다음줄로 이동한것을 알려줌 반환값 성공시 0 에러시 -1 주의사항 -lreadline 라이브러리를 링크해주어야 함 rlreplaceline 인자 `*s

2022년 9월 17일
·
0개의 댓글
·

[minishell] minishell 이란

Minishell 닫히지 않은 따옴표나 특정되지 않은 특수문자 (\\나 ; 등...) 을 해석하지 않아야 합니다. 전역변수는 한 개 이상을 사용할 수 없으며, 왜 전역변수를 사용했는지 깊게 생각해 보고 그 이유를 설명할 수 있어야 합니다. 새로운 명령어를 입력할 수 있는 프롬프트를 보여줘야 합니다. 작업 히스토리를 갖고 있어야 합니다. (PATH 변수나 상대, 절대 경로를 활용하여) 올바른 실행 파일을 찾아 실행할 수 있어야 합니다. 다음의 내장 기능을 실행할 수 있어야 합니다: n 옵션을 사용할 수 있는 echo 오직 상대 또는 절대경로만 사용하는 cd 옵션이 없는 pwd

2022년 9월 14일
·
0개의 댓글
·