2012-02-11 50 views
2

我想隨機地訪問一個大文件的部分。如果我需要文件的另一部分,用mmap打開我需要的部分。我應該再次關閉第一個內存映射區域和mmap,還是可以同時打開兩個內存映射區域?爲文件調用mmap兩次

我不想映射所有的文件,因爲它可能比RAM大,我會在我的程序中同時打開多個文件。

回答

5

映射不消耗RAM。您可以並且應該映射整個文件,除非它大於可用的地址空間。在64位計算機上,這是不太可能的。在32位上,這不是不可能的。

無論如何,您可以根據需要爲每個單個文件創建儘可能多的映射。

+0

我希望能夠打開20-30個文件。在32位系統上如果我同時打開2個4GB文件,是否會超出地址空間? – Berk 2012-02-11 20:36:04

+0

在32位系統上無法映射全部甚至一個4GB文件。因此,根據我的第二段,製作許多小片的映射。 – bmargulies 2012-02-11 21:20:20