2011년9월15일_도서관리프로젝트_4일차-파일에 기록시 파일변위(offset)이 내가 생각한 것과 다르다!



   1: //파일존재유무 코드와 그 이전 코드는 생략
   2: iFd = open(FILE_NAME, O_WRONLY/* | O_APPEND*/);
   3: errorProc(iFd, -2000);    //파일열기에러 코드값은 -2000
   4: lseek(iFd, 0, SEEK_SET);    //불필요
   5: write(iFd, cBuffHead, sizeof(cBuffHead));
   6: close(iFd);    //파일크기 기록을 위해 닫음.
   7:  
   8: iFd = open(FILE_NAME, O_WRONLY/* | O_APPEND*/);
   9: //이후 생략

파일을 열고 lseek()로 파일포인터의 위치를 파일의 시작으로 변경시키고 헤더를 기록한 후..
다시 lseek()로 파일포인터의 위치를 파일의 끝으로 이동시켰으나..
결과가 이상하게 헤더가 계속 사라져서..
문제의 원인을 분석해 보니 lseek()는 현재 파일의 크기를 검사하더라..
그래서 파일을 닫고 다시 열어서 끝으로 이동시키니 잘 되었다. 잇힝~

그런데 다른 문제가 또 발생하였다…쩜쩜쩜

 

   4: lseek(iFd, 0, SEEK_SET);    //불필요

아참 4행의 lseek()는 필요없다. 파일을 열면 변위는 파일의 시작이니..