티스토리 뷰

c언어 프로그래밍을 하다 보면 파일 io를 할 때가 있다.

여기서 파일의 총 라인 수를 얻고 싶을 때가 있다.

현업에서는 파일 라인수를 읽는것은 매우 중요하다. 이유는 다음과 같다.

예를 들어 db table을 truncate나 delete로 모두 지우고 insert 하는 일이 발생한다.

insert 전에 truncate가 먼저 일어난다. 때문에 truncate를 하고 나서 insert하려고 했을때 파일 내용이 없을경우 insert가 되지 않고 db table은 데이터가 없는 상태가되어 장애를 일으킨다.

이런게 별것 아닌거 같지만 파장은 심각하다. 예를 들어 인사 정보를 새벽에 갱신하는 배치파일이 있다고 가정해 보자.

만약 인사배치파일에 오류가 생겨 한 3건이나 0건으로 파일이 넘어왔을 경우 배치파일이 실행되면서 truncate가 발생하여 인사 테이블을 다 지우며 insert가 실행될때 3건이나 0건이 insert가 된다.

그러경우 파장은 안봐도 뻔하다.

더 놀라운 것은 대부분의 개발자들이 저렇게 총 건수를 체크 안하고 개발하는 것이다. 왜냐하면 테스트할때는 파일에 내용이 있고 그것을 읽어들여 개발하고 테스트하기 때문이다.

파일에 내용이 없을경우에 테스트를 할 생각을 전혀 할 수가 없다.

현장에 있으면서 이러한 일을 몇번 겪다보면 저렇게 총건수를 먼저 체크하고 truncate를 한다.

별것 아닌것 같지만 저렇게 해서 장애가 발생하면 후폭풍이 거세다. 고객의 신뢰를 읽게되며 장애보고서등을 개발자가 써야할 경우가 생겨 피곤해진다.

자 그럼 총건수를 체크하는 함수를 살펴보자.

int getTotalLine(char *name){
  FILE *fp;
  int line=0;
  char c;
  fp=fopen(name,"r");
  while((c=fgetc(fp))!=EOF)
    if(c=='\n') line++;
  fclose(fp);
  return(line);
}


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함