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하고 종료해주는 함수 구현