자료구조
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는 현재 디렉토리의 경로를 담고있다.
답글 남기기