42Seoul의 과제 중 하나인 Minishell 과제의 요구 사항을 정리한 포스트이다.
항목 | 요구사항 |
---|---|
Program name | minishell |
Turn in files | |
Makefile | Yes |
Arguments | |
External functs. | 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 authorized | Yes |
Description | Write a shell |
셸(shell)은 다음을 수행해야 한다.:
-n
옵션이 있는 echo
cd
pwd
export
unset
env
exit
'
는 일련의 문자에 대한 모든 해석을 금지한다."
은 $
를 제외한 일련의 문자에 대한 모든 해석을 금지한다.<
는 입력을 리디렉션해야 합니다.>
는 출력을 리디렉션해야 합니다.<<
는 구분 기호만 포함하는 행이 표시될 때까지 현재 소스에서 입력을 읽는다. 기록을 업데이트할 필요가 없다~>>
는 추가 모드로 출력을 리디렉션해야 합니다.|
파이프라인에 있는 각 명령의 출력은 파이프를 통해$
다음에 문자)는 해당 값으로 확장되어야 한다.$?
은 가장 최근에 실행된 포그라운드 파이프라인(foreground pipline)의 종료 상태로 확장되어야 합니다.ctrl-C
, ctrl-D
, ctrl-\
는 bash에서처럼 작동해야 한다.ctrl-C
은 줄 바꿈에 새 프롬프트를 인쇄합니다.ctrl-D
는 쉘을 종료합니다.ctrl-\
는 아무 작업도 수행하지 않습니다.수행하는 것 외에는 필요하지 않다.
모든 요점에 대해 의심이 가는 경우 bash를 참조로 사용해라
&&
, ||
구현