fd = open("input.dat",O_RDONLY);

 

read(fd,buffer,buf_size);

 

 file[0] = open("/tmp/file.dat", O_RDWR,O_CREAT,0644);

 write(file[0], buffer,buf_size);

 

read(fd,buffer,buf_size);

close(fd);

 

read(file[0],buffer,10);

close(file[0]);

 

여러가지 생략되어있어서 소스에 덧붙여서 설명하면

 

먼저 fd에서 input.dat 를 읽기형식으로 열고

 

buffer라는 캐릭터 어레이에 buf_size만큼의 데이터를 읽어서 저장했어. (buf_size 가 진짜로 buffer어레이의 크기임)

 

그리고 file.dat라는 파일을 읽기쓰기 방식으로 생성했고, buffer에 있는 자료들을 file.dat에 저장했어

 

그리고 buffer에는 fd에서 또 buf_size만큼 읽어와서 buffer 어레이는 새로운 자료들로 다 초기화가 되었지.

 

그리고 아까 file.dat에 저장해놨던 buffer가 초기화 되기 전의 자료의 10바이트만큼의 자료를 읽어와서

 

버퍼를 앞의 10바이트는 아까 자료, 뒤의 나머지 바이트는 나중 자료 로 채워 넣으려고 해.

 

근데 프린트 해보니까 10바이트를 읽어오지를 못하더라고... 분명히 RDWR로 생성했는데 말이지...

 

write까지는 성공한걸 확인했어.

 

그래서 이렇게 바꿔보았더니 되는거야.

 

fd = open("input.dat",O_RDONLY);

 

read(fd,buffer,buf_size);

 

file[0] = open("/tmp/file.dat", O_RDWR,O_CREAT,0644);

write(file[0], buffer,buf_size);

close(file[0]);

 

file[0] = open"/tmp/file.dat",O_RDONLY);

 

read(fd,buffer,buf_size);

close(fd);

 

read(file[0],buffer,10);

close(file[0]);

 

RDWR로 생성한걸 먼저 close 시킨다음에

 

다시 RDONLY로 열어서 읽으니까 10바이트를 읽어서 원하는대로 되더라고...

 

대체 왜 RDWR로 만들었는데 write만 성공하고 read는 실패하고 닫은담에 다시 리드온리로 열어야 되는걸까 ??

 

고수 형들 부탁해...