0923 - tamagoyakii/minishell GitHub Wiki

Parsing Part

๋ฐ˜ํ™˜ ๊ฐ’ ๊ตฌ์กฐ์ฒด ์ƒ์„ฑ

typedef enum e_return_type
{
	SUCCESS,
	FAIL
}	t_return_type;

redir_type ๊ตฌ์กฐ์ฒด ๋ณ€๊ฒฝ

typedef enum e_redir_type
{
	NONE,	// ์ถ”๊ฐ€
	T_OUT,	// ์ด๋ฆ„ ๋ณ€๊ฒฝ
	A_OUT,	// ์ด๋ฆ„ ๋ณ€๊ฒฝ
	IN,	// ์ด๋ฆ„ ๋ณ€๊ฒฝ
	HDOC	// ์ด๋ฆ„ ๋ณ€๊ฒฝ
}	t_redir_type;

argv ๊ตฌ์กฐ์ฒด ๋ณ€๊ฒฝ

typedef struct s_argv
{
	char		**cmd;
	struct s_redir	*in;
	struct s_redir	*out;
	struct s_redir	*hdoc;	// ์ถ”๊ฐ€
	struct s_argv	*next;
}	t_argv;

Execute Part

flowchart ์™„์„ฑ ํ•˜๊ธฐ

  • ํžˆ์–ด๋… ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„ ๋จผ์ € ์ถ”๊ฐ€๋จ
  • ํžˆ์–ด๋…์€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋กœ ์ฒ˜๋ฆฌํ•จ

heredoc ์ฒ˜๋ฆฌํ•˜๊ธฐ

/* d๊ฐ€ ์—†๋Š” ํŒŒ์ผ์ผ ๋•Œ */
cat < d << dd

// โ†’ ํžˆ์–ด๋… ๋จผ์ € ๋๋‚ด๊ณ , ํžˆ์–ด๋…์ด ๋๋‚˜๋ฉด "No such file ~ "์ด ๋œธ

cat < d << dd < c

// โ†’ ํžˆ์–ด๋… ๋จผ์ € ์‹คํ–‰ ๋˜๊ณ  ๋๋‚œ ํ›„, "No such file ~ "์ด ๋œธ (c๋Š” ์‹คํ–‰ ์•ˆ ๋จ)

โ‡’ ํžˆ์–ด๋… ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ, ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฝ๋‹ค๊ฐ€ ์—†๋Š” ํŒŒ์ผ์ผ ๊ฒฝ์šฐ flag ๋ฅผ ์„ธ์›Œ์ฃผ๊ณ  ๋๊นŒ์ง€ ๊ณ„์† ์ฝ๊ธฐ

error ์ฒ˜๋ฆฌํ•˜๊ธฐ

  • fork ์‹คํŒจ์‹œ
    • while๋ฌธ ํƒˆ์ถœ, ์‹คํ–‰๋œ ์ž์‹๋“ค์€ wait๋กœ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ โ†’ break ;๋งŒ ์‹œ์ผœ์ฃผ๋ฉด ๋จ
  • pipe ์‹คํŒจ์‹œ
    • ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ๋กœ ์•ˆ ๋“ค์–ด๊ฐ€๊ณ , return ; ์‹œ์ผœ์„œ ๋‹ค์‹œ ์ž…๋ ฅ ๋ฐ›๊ธฐ
  • execve ์‹คํŒจ์‹œ
    • exit(1);
  • malloc ์‹คํŒจ์‹œ
    • ๋ฌด์กฐ๊ฑด exit(1);
  • open ์‹คํŒจ์‹œ & dup ์‹คํŒจ์‹œ
    • ์ž์‹ ํ”„๋กœ์„ธ์Šค : exit(1);
    • ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค : return ; ์‹œ์ผœ์„œ ๋‹ค์‹œ ์ž…๋ ฅ ๋ฐ›๊ธฐ

error ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „์—ญ๋ณ€์ˆ˜ ๊ตฌ์กฐ์ฒด

// ๋‚จ์ค€๋‹˜ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธํšจ

todo

๊ตฌํ˜„ ํŒŒํŠธ nheo

  1. ft_open ๊ตฌํ˜„
  2. init ๊ตฌํ˜„
  3. is_builtin ๊ตฌํ˜„

์‹œ๊ทธ๋„ ํŒŒํŠธ jabae

  1. ํžˆ์–ด๋…(์ž์‹) ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ ๊ตฌํ˜„ : ^C -> exit 1
  2. ์ž์‹ ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ ๊ตฌํ˜„ : exit + 128
  3. ๋ฉ”์ธ ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ ๊ตฌํ˜„ : ^C -> last_exit 1 + ์ƒˆ ํ”„๋กฌํฌํŠธ ์ถœ๋ ฅ, ^\ -> ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ธฐ

์—๋Ÿฌ ํ•ธ๋“ค๋ง nheo

  1. fork ์‹คํŒจ์‹œ ํ•ธ๋“ค๋งํ•ด์ฃผ๋Š” ๋ถ€๋ถ„ ๊ตฌํ˜„
  2. init, heredoc ์‹คํŒจ์‹œ freeํ•˜๊ณ  ์ข…๋ฃŒํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ๊ตฌํ˜„