동일한 파일은 여러프로세스가 fopen -> fwrite ->fclose 시에 문제가 생길수 있나요?
글쓴이: trymp / 작성시간: 목, 2013/12/19 - 3:02오후
동일한 파일 test.txt 에 대해서 프로세스 A 가
fopen -> fwrite ->fclose 를 한 다음
프로세스 B가 fopen->fread 를 했을 때,
B가 읽은 내용이 A 가 write 한 내용이 아닐수도 있나요?
제 질문은 fsync() 를 안하더라도 fclose 를 하면 다른 프로세스가
읽었을때 갱신된 내용이 보장되는지 입니다.
순서는 위의 순서와 같고요, 그렇게 되는 경우를 아직
본적은 없어서 이런 경우가 발생할수 있는지 조언을
부탁드립니다.
Forums:
경쟁상태만 신경쓴다면 문제는 없어 보입니다.
http://www.cplusplus.com/reference/cstdio/fclose/
여기 보시면 "the content of any unwritten output buffer is written and the content of any unread input buffer is discarded." 라고 나와있습니다.
디스크에 바로 쓰여지진 않더라도 최소한 버퍼에 있는 데이터가 다른 프로세스에서 open하고 read했을 때 읽힐 겁니다. 이건 뭐 운영체제가 효율을 높이려고 굳이 하는 일인데, 프로그램에 영향을 주면 안되죠.
댓글 달기