파일 복사하는 소슨데 문제점좀 찾아주세요..

fourier의 이미지

#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 에러가 뜨네요.
원인이 뭘까요?

iminsik의 이미지

??????

- 성공하고 싶으면, 아무리 심심해도 프로그래밍 갤러리는 가지 말자 -

fourier의 이미지

저게 문제가 될 수 있는건가요?

iminsik의 이미지

이게 무슨 의민지 몰랐어요. 저렇게 하면 생성과 동시에 퍼미션을 줄 수 있군요.

근데, 한번 뺴고 해 테스트해 보시면 어떨까요?

- 성공하고 싶으면, 아무리 심심해도 프로그래밍 갤러리는 가지 말자 -

givepray1111의 이미지

퍼미션은 저렇게 비트연산으로 추가하는게 아닌 세 번째 매개변수로 추가하는 걸로 알고 있습니다. 물론 생략 가능하구요.

winner의 이미지