[英]What does mmap do?
這行代碼有什么作用?
mmap(NULL, n, PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
它請求n
字節內存的私有可寫匿名映射。
fork()
,子進程和父進程將具有獨立的映射); 在這種情況下,它本質上是請求一個n
字節的內存塊,所以大致相當於malloc(n)
(盡管它必須用munmap()
而不是free()
釋放,並且它將是頁面對齊的)。 它還要求內存可寫但不要求它是可讀的,但是可寫和不可讀的內存通常不是底層硬件支持的組合。 當單獨請求PROT_WRITE
時,POSIX允許實現提供也可以讀取和/或可執行的內存。
man mmap
會幫助你。
它在進程的虛擬地址空間中創建內存映射。 它正在創建一個匿名映射,這就像使用malloc
分配n
個字節的內存一樣。
參數是:
NULL
- 內核將為映射選擇一個地址 n
- 映射的長度(以字節為單位) PROT_WRITE
- 可以寫入頁面 MAP_ANON | MAP_PRIVATE
MAP_ANON | MAP_PRIVATE
- 映射不由文件支持,寫入映射的更新對進程是私有的 -1
- 文件描述符; 未使用,因為映射不受文件支持 0
- 文件中開始映射的偏移量 - 再次,未使用,因為映射不受文件支持
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.