0
OS 프로젝트 용 C 언어로 쉘을 빌드하려고합니다. 리디렉션 부분을 수행 할 때 문제가 발생합니다. ls
은 정상적으로 작동하지만, 수행 할 때는 ls > somefile
입니다. 그것은 나에게 "ls : can not access> : No such file or directory"오류를줍니다. 여기 ls
에서execvp, ls 출력 재 지정
while(in){
argv[c]=strdup(in); \\in is output of strtok applied on input string
in=strtok(NULL,"\n , ");
c++;
}
argv[c]=NULL;
int rc=fork();
if(rc==0){
int flag = 0;
int index = 0;
int i;
for(i= 0; i <c;i++)
{
if(strcmp(argv[i],">") == 0)
{
flag = 1;
index = i+1;
}
}
if(flag == 1)
{
fclose(stdout);
fopen(argv[index],"w+");
}
execvp(argv[0],argv);
}
else if(rc>0){
(void) wait(NULL);}
}
return 0;
}
나는이 문제를 봤다고 생각한다. 리디렉션 인수를 제거하지 않았습니다. 그리고 네, fopen이 새로운 파일에 설명자 1을 할당한다고 가정합니다. 나는 다른 방법으로 그것을하는 방법을 모른다. @Eten Reisner –
@AnmolYousaf ['man fopen'] (http://linux.die.net/man/3/fopen)에는 유용한 다른 기능이 있습니다. 또한 ['man dup'] (http://linux.die.net/man/3/dup). –
감사합니다. @EtanReisner –