파일 복사하는 소슨데 문제점좀 찾아주세요..
글쓴이: 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
번역해보는 재미를 가지시면 좋습니다.
댓글 달기