Minishell Deep Dive

자료구조

typedef enum e_type
{
        PIPE,
        INPUT_REDIR,
        APPEND_REDIR,
        OUTPUT_REDIR,
        HEREDOC,
        CMD,
        FILENAME
}               t_type;

typedef struct s_token
{
        char                    *token;
        t_type                  type;
        struct s_token  *next;
}                                       t_token;

typedef struct s_data
{
        char                    **envp;
        char                    **argv;
        char                    *init_homepath;
        t_token                 *zero_token;
        struct s_data   *next;
        int                             num_pipe;
        int                             last_in;
        int                             last_out;
        char                    *pwd;
}                                       t_data;

Minishell 프로젝트에서 사용한 자료구조는 위와 같다. t_data는 단방향 연결리스트이다. 개념적으로 파이프로 구문된 한 단락의 명령어를 담고있다. envp와 argv는 main함수를 통해 입력된 환경변수와 문자열의 주소를 그대로 입력한다. init_homepath는 프로그램이 실행될 시 최초로 입력됐던 homepath의 경로이다. (쉘 명령어 입력시 ‘~’ 문자를 구현하기 위해 사용되었다.) zero_token은 단방향 연결리스트로 구현된 t_token 구조체의 head이다. 한 단락 내에서 공백으로 구분된 단어를 의미한다. num_pipe는 전체 파이프의 갯수이다. last_in과 last_out은 파일디스크립터를 위한 변로젝트에서 사용한 자료구조는 위와 같다. t_data는 단방향 연결리스트이다. 개념적으로 파이프로 구문된 한 단락의 명령어를 담고있다. envp와 argv는 main함수를 통해 입력된 환경변수와 문자열의 주소를 그대로 입력한다. init_homepath는 프로그램이 실행될 시 최초로 입력됐던 homepath의 경로이다. (쉘 명령어 입력시 ‘~’ 문자를 구현하기 위해 사용되었다.) zero_token은 단방향 연결리스트로 구현된 t_token 구조체의 head이다. 한 단락 내에서 공백으로 구분된 단어를 의미한다. num_pipe는 전체 파이프의 갯수이다. last_in과 last_out은 파일디스크립터를 위한 변수이다. pwd는 현재 디렉토리의 경로를 담고있다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다