스트림 함수의 경우 내부적으로 스트림을 통해 버퍼를 사용합니다.
(스트림이란 중간 관리대행자? 정도로 보시면 됩니다. 그 놈에게 명령하면 알아서 대신 해 줍니다.)
실제 데이타를 읽고 쓰는 순간에 대한 파일 손상을 우려할 수 있을지 모르지만, 그 부분은 미리 백업관계를 확보해 두는것으로 처리하는게 안전할듯합니다.
실제 워드 등에서 AutoSave 기능이 있는것도 이러한 이유입니다.
다 쓰지 못한 상황에서 전원이 나가면,, 자료도 날아갑니다.
혹시 버퍼에대해 민감한 파일처리를 한다면 일반 파일처리 함수도 써보세요.
스트림 함수로도 충분할 듯하지만 버퍼의 최적화등을 고려해 봐야할 상황이라면...
OPEN, CLOSE, WRITE, READ...
사용법은 비슷하지만 직접 읽어들이는 버퍼를 만들어서 지정해주는 등등의 작업이 필요합니다.
박훈준 님이 쓰신 글 :
: 안녕하세요. C공부를 한참 하던중 질문 드립니다.
:
: fflush 를 두고 고민하다 고민이 생긴건데요.
:
: 예를들면 fwrite 함수로 파일에 자료를 쓰는 작업을 했다고 하면요
:
: 그 자료가 잠시 버퍼에 남아 있지 않나요? 그 자료가 버퍼의 크기보다
:
: 작아서 버퍼가 다 차기전에 일괄적으로 처리 하기전에. 우선 버퍼에 남아 있다고
:
: 치면... fwrite 함수를 썻어도 아직 쓰기 작업은 안되거잖아요? 프로그램이 종료
:
: 되거나 fflush 를 이용하거나 버퍼가 꽉차서 일괄적으로 기록하는 등등의
:
: 상황이 있을수 잇는데요. 만약에 버퍼에 아직 자료가 덜 차서 디스크에 써야할 자료가
:
: 남아있는 상황에서 전원이 나가면 어떻게 하죠? 사용자는 분명 fwrite 를 했음에도 불구하고
:
: 그렇게 되면 자료를 잃게 되는 건가요?
:
: 아... 너무 주저리 주저리 길게 해서 죄송하고요. 궁금증이 생겨서 질문 합니다.
:
: 그럼 부탁 드립니다.. (- -) (_ _) (- -)/
:
:
|