[minishell] : As beautiful as a shell
# Description
간단한 shell을 만들어봅시다.
# Keywords
Unix logic
# common instructions
더보기
- 프로젝트는 C로 작성된다.
- norm을 따라야한다. 보너스 역시 norm을 따라야 한다.
- 예기치 않게 프로그램이 중단되어서는 안됩니다.
- (segmentation fault, bus error, double free 등등등등ㄷ)
- 메모리 누수 당연히 안됨
- 할당한 메모리는 모두 해제하세영
- -Wall -Wextra -Werror 플래그를 통해 컴파일 수행하기, 리링크는 당연히 안됩니다.
- Makefile은 $(NAME), all, clean, fclean, re 규칙을 포함해야해요.
- 보너스를 만들고자 할 때는 Makefile에 보너스 규칙을 포함해야합니다.
- 보너스 과제는 별도의 파일에 만드세요
# mandatory part
- 사용 가능 함수
- readline
- rl_on_new_line
- rl_replace_line
- rl_redisplay
- add_history
- printf
- malloc
- free
- write
- open
- read
- close
- fork
- wait
- waitpid
- wait3
- wait4
- signal
- kill
- exit
- getcwd
- chdir
- stat
- lstat
- fstat
- unlink
- execve
- dup
- dup2
- pipe
- opendir
- readdir
- closedir
- strerror
- errno
- isatty
- ttyname
- ttyslot
- ioctl
- getenv
- tcsetattr
- tcgetattr
- tgetent
- tgetflag
- tgetnum
- tgetstr
- tgoto
- tputs
- 직접 만든 libft
- 닫히지 않은 따옴표나 특정되지 않은 특수문자 (\, ;) 을 해석하지 않아야 한다.
- 전역변수는 한 개 이상을 사용할 수 없으며 사용해도 타당한 근거가 있어야 한다.
- 새로운 명령어를 입력할 수 있는 프롬프트를 보여줘야 한다.
- 작업 히스토리를 갖고 있어야 한다.
- (PATH 변수나 상대, 절대 경로를 활용하여) 올바른 실행 파일을 찾아 실행할 수 있어야 한다.
- 구현해야하는 내장 기능
- -n 옵션을 사용할 수 있는 echo
- 상대, 절대경로만 사용하는 cd
- 옵션이 없는 pwd
- 옵션이 없는 export
- 옵션이 없는 unset
- 옵션, 인자값이 없는 env
- 옵션이 없는 exit
- ' 는 연속적인 문자의 해석을 금지한다.
- " 는 $를 제외한 연속된 문자의 해석을 금지한다.
- 리다이렉션
- < 는 입력을 리다이렉션 한다.
- > 는 출력을 리다이렉션 한다.
- << 는 현재 소스에서 구분자를 포함한 줄을 만나기 전까지 입력값을 읽어온다. 기록은 업데이트 하지 않아도 됨
- >> 는 출력을 추가 모드로 리다이렉션한다.
- 파이프 ( | )
- 각 파이프라인마다 명령어의 출력값은 파이프로 연결되어 다음 명령어의 입력값으로 들어가야한다.
- 환경 변수 ($ 문자열) 은 그들의 값으로 확장되어야 한다.
- $? 는 가장 최근에 실행한 포그라운드 파이프라인의 종료 상태를 확장해야한다.
- ctrl-C, -D, -\ 은 bash와 동알하게 동작해야 한다.
- -C : 새로운 줄에 새로운 프롬프트를 출력
- -D : 쉘 종료
- -\ : 아무 동작 하지 않음
5월 안에 끝내야 하는데.....흐어ㅓㅓ
42-translation 감사합니다........
'42seoul > circle-3' 카테고리의 다른 글
[ minishell ] 1. 사전지식 (0) | 2022.05.15 |
---|---|
[Philosophers] 1. 과제 해결하기 (0) | 2022.05.08 |
[Philosophers] 0. 과제 이해하기 (2) | 2022.04.27 |
댓글