과제설명
규칙
- 닫히지 않은 따옴표나
\
또는 ;
와 같은 명시되지않은 특수문자는 해석하지 마세요.
- 전역변수는 한개를 초과하면 안되고, 왜 전역변수를 사용했는지 설명할 수 있어야 합니다.
- 새로운 명령어를 입력할 수 있는 프롬프트를 보여줘야 합니다.
- 사용했던 명령어들을 up down으로 확인할 수 있는 working history가 있어야 합니다.
- bash에서처럼 (PATH 변수나 상대, 절대 경로를 활용해) 올바른 실행파일을 찾고 실행할 수 있어야 합니다.
- 다음과 같은 내장기능을 구현해야 합니다
- -n옵션을 사용할 수 있는
echo
- 오직 상대경로, 절대경로만 사용하는
cd
- 옵션 없는
pwd
- 옵션 없는
export
- 옵션 없는
unset
- 옵션이나 인자 없는
env
- 옵션 없는
exit
'
는 일련의 문자를 해석하지 않습니다.
"
는 $
를 제외한 일련의 문자를 해석하지 않습니다.
- 리다이렉션
<
는 입력을 리다이렉션 해야합니다.
>
는 출력을 리다이렉션 해야합니다.
<<
는 구분기호만 있는 줄이 나타날때까지 현재 소스에서 입력을 읽어들입니다.
>>
는 출력을 덮어쓰기 하지 않고 입력파일에 이어쓰기로 리다이렉션 합니다.
- Pipes
파이프라인에 있는 각 명령어의 출력은 파이프를 통해서 다음 명령의 입력에 연결됩니다.
- 환경변수는 다음과 같은 변수로 확장되어야 합니다
($변수명)
$?
는 가장 최근에 실행된 포어그라운드 파이프라인의 종료상태로 확장되어야 합니다.
Ctrl + C , Ctrl + D, Ctrl + \
는 bash와 동일하게 동작되어야하고 대화형일땐 다음과 같이 동작해야 합니다.
- Ctrl + C는 새 라인에 새로운 프롬프트를 출력합니다.
- Ctrl + D는 쉘을 종료합니다.
- Ctrl + \는 아무것도 하지 않습니다.
요구한 부분 외에는 필요하지 않습니다.
만약 조금이라도 의심가는 부분이 있다면 bash
를 참고하세요.
프로그램 정보
- 프로그램 명
minishell
- Makefile
Yes
- 사용 가능 함수
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
minishell 사용가능 함수 정리
- Libft 사용
가능
[minishell] 사용가능 함수 정리
[minishell] 리다이렉션 및 here doc정리
[minishell] dup정리