본문 바로가기
42seoul/circle-3

[minishell] 0. 과제 이해하기

by saniii 2022. 5. 13.

[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

댓글