c언어 redirection 문제 질문드립니다..

tlqkdto89의 이미지

void redirection(int i)
{
	int j;
	int fd = 0;
	for(j = 1; j < i - 1; j++) 
	{	
		if(!strcmp(cmdvector[j], ">")) 
		{
			if((fd = open(cmdvector[j + 1], O_WRONLY | O_CREAT, 0644)) < 0) 
			{
				fatal("open error");
			}
			dup2(fd, STDOUT_FILENO);
			cmdvector[j] = '\0';
			cmdvector[j + 1] = '\0';
		}
		else if(!strcmp(cmdvector[j], "<")) 
		{
			if((fd = open(cmdvector[j + 1], O_RDONLY, 0644)) < 0) 
			{
				fatal("read error");
			}
			dup2(fd, STDIN_FILENO);
			cmdvector[j] = '\0';
			cmdvector[j + 1] = '\0';
		}
		continue;
	}
}

인자로 넘겨받은 i는 cmdline을 분석하고 넘겨받은 token의 개수입니다.
cmdvector는 입력한 명령어이구요..
이걸 실행하면 cat > a.txt와 cat < a.txt는 실행이 잘 됩니다.
그런데 cat < a.txt > b.txt와 같은 명령어는 실행이 되지 않습니다..
이 부분은 어떻게 구현하는게 좋을지 궁금합니다.. 도와주셔서 감사합니다. ㅠ