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는 실패하고 닫은담에 다시 리드온리로 열어야 되는걸까 ??
고수 형들 부탁해...
댓글 0