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;
μλ¬ μ²λ¦¬ λ Όμ
- μ²λ¦¬ λ°©λ²
- μλ¬μ λΆλͺ¨νλ‘μΈμ€μΈμ§, μμ νλ‘μΈμ€μΈμ§ pid νμΈ(μ μλ³μ ꡬ쑰체μ λΆλͺ¨ νλ‘μΈμ€ pidκ° λ΄κ²¨ μμ)
- λΆλͺ¨νλ‘μΈμ€μμ μμ΄ λλλ©΄ μ λλ κ²½μ°, return ;
- μμ νλ‘μΈμ€λ exit μμΌμ€
- μλ¬λ©μμ§
- command not found
- too many arguments
- no such file or directory
- λ±λ± ... (λ¨μ€λμ΄ μ²λ¦¬ν΄μ€κΊΌμ!)
todo
echo(-nμ΅μ ) : λ¨μ€exit: (+ error μ²λ¦¬κΉμ§)λ¨μ€cd: μ¬μpwd: μ¬μexport: μ¬μunset: μ¬μenv: μ¬μ
β β‘οΈλ¨μ€μ΄λ μΌμ° λλ΄λ©΄ μμν μμ μ¬ν, μ΄μ κ΄λ¦¬ μμ