파일 복사하는 소슨데 문제점좀 찾아주세요..
글쓴이: fourier / 작성시간: 토, 2009/05/16 - 10:36오후
#include <unistd.h> #include <fcntl.h> main() { int infile,outfile; int nread; char buffer[1024]; if((infile= open("a",O_RDONLY))==-1) perror("err"); if((outfile = open("b",O_WRONLY | O_CREAT | O_TRUNC | 0777))==-1) perror("err2"); while( (nread=read(infile,buffer,1024))>0) { if(write( outfile,buffer,nread)<nread) { perror("err3"); } } close(infile); close(outfile); return 0; }
a 파일과 동일한 파일 b 를 만드는 소스입니다.
분명 책에 있는데로 한건데 err3에 걸리면서 bad file descriptor 에러가 뜨네요.
원인이 뭘까요?
Forums:
' | 0777' 는 왜 붙이신 건지요...
??????
- 성공하고 싶으면, 아무리 심심해도 프로그래밍 갤러리는 가지 말자 -
파일 생성과 동시에 퍼미션 주는 옵션으로 알고 있는데요..
저게 문제가 될 수 있는건가요?
아. 저는 윈도에서 해 봐서
이게 무슨 의민지 몰랐어요. 저렇게 하면 생성과 동시에 퍼미션을 줄 수 있군요.
근데, 한번 뺴고 해 테스트해 보시면 어떨까요?
- 성공하고 싶으면, 아무리 심심해도 프로그래밍 갤러리는 가지 말자 -
저수준 open함수는
퍼미션은 저렇게 비트연산으로 추가하는게 아닌 세 번째 매개변수로 추가하는 걸로 알고 있습니다. 물론 생략 가능하구요.
세번째 매개변수는 파일 생성때 쓰는군요.
http://www.freebsd.org/cgi/man.cgi?query=open&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html
번역해보는 재미를 가지시면 좋습니다.
댓글 달기