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 ;
만 시켜주면 됨
- while문 탈출, 실행된 자식들은 wait로 기다리기 →
pipe
실패시- 프로세스 처리로 안 들어가고,
return ;
시켜서 다시 입력 받기
- 프로세스 처리로 안 들어가고,
execve
실패시exit(1);
malloc
실패시- 무조건
exit(1);
- 무조건
open
실패시 &dup
실패시- 자식 프로세스 :
exit(1);
- 부모 프로세스 :
return ;
시켜서 다시 입력 받기
- 자식 프로세스 :
error
처리를 위한 전역변수 구조체
// 남준님 추가해주세효
todo
구현 파트 nheo
- ft_open 구현
- init 구현
- is_builtin 구현
시그널 파트 jabae
- 히어독(자식) 시그널 처리 구현 : ^C -> exit 1
- 자식 시그널 처리 구현 : exit + 128
- 메인 시그널 처리 구현 : ^C -> last_exit 1 + 새 프롬포트 출력, ^\ -> 아무것도 안하기
에러 핸들링 nheo
- fork 실패시 핸들링해주는 부분 구현
- init, heredoc 실패시 free하고 종료해주는 함수 구현