我得到macOS的場景,我不能關閉內存映射文件沒有 解除它首先(使用munmap syscall),雖然關閉系統調用返回成功結果(= 0)我仍然可以在lsof -n
中看到文件記錄。內存映射文件不能關閉沒有未映射,因爲它仍然被引用
在linux中,它明確提到,closing the file doesn't unmap the file
,根據MMAP手冊頁。
是它確實是2和操作系統之間的不同的行爲? 對這種不同的行爲有任何解釋嗎?
編輯:閱讀下面的評論後,我已經意識到,有平臺之間沒有任何不同的行爲,以及爲什麼我的文件仍然打開的原因是因爲它仍然被MMAP引用。
感謝
難道使用模式是在Linux中之間你的網站與MacOS的有什麼不同?我期望在文件實際關閉之前關閉*和*取消映射文件是必要的。 Linux可能對命令無動於衷,但也許MacOS關心首先完成。 – wallyk
由於mmap文件仍在使用中,您所做的只是關閉描述符。 –
你在Linux上測試過嗎?我有* 2 *在'項lsof的-n'輸出 –