546
2016-05-19 01:03:57
0
아마 파일에 쓸 때도 전역변수 info 를 썻던 이유는 어차피 파일을 읽고 저장된 후 파일에 쓸 때도 동일한 녀석 기반으로 쓰게 될테니 info 뒷 부분에 저장하면 되지 않을까? 생각 할 수 있습니다.
만약 그렇게 생각하셨다면 ..... 맞습니다 =ㅁ=!!!???!?!? 그렇게 사용하시는게 사실 더 맞을것 같아요.
하지만 만약 이런 경우에는 위 경우가 맞지 않게 됩니다.
1. 파일에 a 데이터를 입력 (enrollment)
: 파일에 a 가 써지고 아직 info 에는 a 가 없음
2. 파일을 읽음 (information)
: 그러면 여기 까지 info에 a 가 들어 가 있음
3. 갑작스런 지진으로 파일이 삭제됨 (!!!!!?!?!?!?!!)
4. 파일에 b 데이터를 입력
만약 이런 케이스 일 경우 위 처럼 작성 하게 된다면 실제 파일에는 b 데이터만 있는데 info 변수에는 a와 b 가 존재하게 되어 변수와 파일의 싱크가 맞지 않게 됩니다.
그래서 위의 소스에서는 이 경우 다음과 같이 동작하게 됩니다.
1. 파일에 a 데이터를 입력
: 파일에 a 가 써지고 info 에 a 가 존재 (enrollment 후에 information 을 같이 넣었기 때문에)
2. 파일을 읽음 (information)
: info 를 파일의 정보에 맞게 다시 갱신 (info 에 a 가 존재)
3. 갑작스런 지진으로 파일이 삭제됨 (!!!!!?!?!?!?!!)
4. 파일에 b 데이터를 입력
: 파일에 b가 써지고 info 에 b 만 존재 (enrollment 후에 information 을 같이 넣었기 때문에)
이렇게 되면 프로그램 중간에 파일이 삭제 되어도 info 변수는 항상 파일의 정보와 싱크가 맞게 됩니다.
물론 좀 더 개선할 수는 있지만 이정도만 해놓고 중요한건 여러 가지 상황에 대해서도 한번 생각해보면 좋을것 같아서 넣어 봤습니다 'ㅡ'