2013-11-10 2 views
0

유닉스에서 리디렉션과 파이프를 시뮬레이션하려고합니다 (<,>, >>, |). 나는 이미 그들 모두를 프로그램 할 수 있지만 추가 (>>)를 관리한다. >>가 cmd 문자열에 있는지 확인하는 코드의 평화가 있습니다. 이 O_WRONLY와 O_APPEND와 발생하지 왜 문제 프로그래밍 UNIX 리디렉션

cat: write error: Bad file descriptor 

사람이 알고 있나요 : 내가 dup2가를 호출 할 때
if(!strcmp(cmd[i], ">>")){ 
     aux[i] = NULL; 
     fdW = open(cmd[i+1], O_APPEND); 
     dup2(fdW, STDOUT_FILENO); 
     close(fdW); 
    } 

그러나() 열려있는 파일 수익률이 오류를 STDOUT 리디렉션합니다.

+3

fdW -1입니까? 두 번째 인수가'O_WRONLY | O_APPEND'이어야합니까? –

+2

은'>>'을 에뮬레이트 할 수 있습니다. 두 번째 인수는'O_CREAT | O_WRONLY | O_APPEND' 일 수 있습니다. – jfs

+0

@ J.F.Sebastian 네, 이제 제 문제가 무엇인지 봅니다. 나는 내가 O_APPEND를 사용한다면 O_CREAT를 사용해야한다고 생각하지 않았다. 대답 해줘서 고마워. –

답변

0

O_APPEND을 사용해도 O_WRONLY을 사용해야한다는 것을 모르는 것이 문제였습니다.