0926 - tamagoyakii/minishell GitHub Wiki

Parsing

μ—λŸ¬ 처리 λ…Όμ˜

  • malloc() ν• λ‹Ή μ‹€νŒ¨ λ“±μ˜ error -> λͺ¨λ“  λ©”λͺ¨λ¦¬ ν•΄μ œ ν›„ μƒˆλ‘œμš΄ 라인 λ°›κΈ°.
  • syntax error -> ? => syntax error κ΄€λ ¨ λ°˜ν™˜ 값이 λ”°λ‘œ ν•„μš”ν•  λ“―

Execute

μ „μ—­λ³€μˆ˜ ꡬ쑰체 μ •μ˜

typedef struct s_info
{
	struct s_env	*env_list;
	/* ν™˜κ²½λ³€μˆ˜ 리슀트, 
	μ •λ ¬ν•΄μ„œ 좜λ ₯ν•˜κ±°λ‚˜ 와일문 λŒλ©΄μ„œ ν‚€ 값을 찾을 λ•Œ μ‚¬μš©ν•¨ */
	char		**env;          
	/* execve()μ—μ„œ μ‚¬μš©ν•  ν™˜κ²½λ³€μˆ˜ 이쀑포인터, 
	ν™˜κ²½λ³€μˆ˜κ°€ μΆ”κ°€λ˜κ±°λ‚˜ μ‚­μ œλ  λ•Œ 핸듀링 ν•΄μ€˜μ•Ό 함 */
	int		last_exit_num;
	/* "$?"λ₯Ό μœ„ν•œ λ³€μˆ˜ */
	pid_t		pid;
	/* κ΅¬ν˜„λΆ€μ—μ„œ λΆ€λͺ¨ν”„λ‘œμ„ΈμŠ€μΈμ§€μ— 따라 
	exit | return ꡬ뢄을 μœ„ν•΄ μ‚¬μš© μ˜ˆμ • */
}	t_info;

μ—λŸ¬ 처리 λ…Όμ˜

  1. 처리 방법
  • μ—λŸ¬μ‹œ λΆ€λͺ¨ν”„λ‘œμ„ΈμŠ€μΈμ§€, μžμ‹ ν”„λ‘œμ„ΈμŠ€μΈμ§€ pid 확인(μ „μ—­λ³€μˆ˜ ꡬ쑰체에 λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€ pidκ°€ 담겨 있음)
  • λΆ€λͺ¨ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‰˜μ΄ λλ‚˜λ©΄ μ•ˆ λ˜λŠ” 경우, return ;
  • μžμ‹ ν”„λ‘œμ„ΈμŠ€λŠ” exit μ‹œμΌœμ€Œ
  1. μ—λŸ¬λ©”μ‹œμ§€
  • command not found
  • too many arguments
  • no such file or directory
  • λ“±λ“± ... (λ‚¨μ€€λ‹˜μ΄ μ²˜λ¦¬ν•΄μ€„κΊΌμž„!)

todo

  • echo (-n μ˜΅μ…˜) : 남쀀
  • exit : (+ error μ²˜λ¦¬κΉŒμ§€)남쀀
  • cd : 재영
  • pwd : 재영
  • export : 재영
  • unset : 재영
  • env : 재영

β‡’ βš‘οΈλ‚¨μ€€μ΄λŠ” 일찍 끝내면 μžμž˜ν•œ μˆ˜μ •μ‚¬ν•­, 이슈 관리 μ˜ˆμ •