작성
·
144
1
monitor( ) 코드에서 ' close(fd); ' 가 while 문 전에 위치하는데, 이 부분이 잘 해석이 안됩니다.
얼핏 생각해서는 munmap( ) 처럼 모든 일을 마무리하고 함수를 빠져 나가기 직전에 해 주는 것이 '더 적절한' 것이라 생각했는데, 실제 코드는 별 무리없이 작동하기에 더 해석이 안되는 것 같습니다.
file mapping 을 통한 shared memory 방식은 실제로는 file I/O 이므로, mmap( ) 이후에 함수 빠져나가기 직전까지 계속해서 스트림이(이 표현이 맞는건지는 잘 모르겠네요..) 살아 있어야 할 것 같은데, 실제로는 그렇게 하지 않아도 코드가 잘 실행되서 잘 이해가 안됩니다.
답변 1
1
파일을 열고, 그 열린 파일에 대해 mmap을 한 것이죠. 그 열린 파일 입장에서 보면 자신을 제어할 수 있는 루트가 두군데인 상황이 된 것이죠. fd를 이용한 조작도 가능하고, mmap으로도 조작이 가능한 것이죠. 이런 불확실한 상황을 만들지 않기 위해 mmap()을 성공한 후 바로 fd를 닫아준 것입니다.
추가 질문 있으시면 답글로 질문 남겨주세요. 좋은 질문 감사합니다.