유닉스 쉘프로그래밍인데요..
parse라는 함수는 주어진 라인에서 한 단어씩 입력하여 배열에 저장하는 함수였는데 리다이렉션을 넣어 더 추가하였습니다.. 추가하고 나니 추가된 부분만 자꾸 안되네요..ㅠㅠ
어떤게 문제일까요??
int parse(char *ln, char *argv[], char *bg)
{
int i = 0, j = 0;
char word[MAX_LINE];
while ((ln = getword(ln, word, bg)) != NULL) {
// 주어진 줄에서 한단어 읽어기
argv[i++] = strdup(word);
if (i == MAX_ARGV) {
argv[MAX_ARGV-1] = NULL;
return MAX_ARGV;
}
}
argv[i] = NULL;
***************추****가****************
for (j = 0; argv[j] != NULL; j++) {
if (!strcmp(argv[j], "<")) {
if (!argv[j+1]) {
printf("error!!");
return 0;
}
else {
fd = open(argv[j+1], O_RDONLY);
if( fd == -1 ) {
printf("File error!!");
return 0;
}
}
dup2(fd, 0);
close(fd);
}
if (!strcmp(argv[j], ">")) {
if (argv[j]) {
if (!argv[j+1]) {
printf("error!!");
return 0;
}
}
else {
fd2 = open(argv[j+1], O_WRONLY);
if( fd == -1 ) {
printf("File error!!");
return 0;
}
}
dup2(fd2, 1);
close(fd2);
}
}
***************추**가**끝**************
return i;
}


댓글 달기