C語言mmap 函式 建立記憶體對映

2021-07-01 21:49:55 字數 727 閱讀 4538

標頭檔案:#include #include

定義函式:void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize);

函式說明:mmap()用來將某個檔案內容對映到記憶體中,對該記憶體區域的訪問即是直接對該檔案內容的讀寫。

引數說明:

引數說明

start

指向欲對應的記憶體起始位址,通常設為null,代表讓系統自動選定位址,對應成功後該位址會返回。

length

代表將檔案中多大的部分對應到記憶體。

prot

代表對映區域的保護方式,有下列組合:

flags

會影響對映區域的各種特性:

在呼叫mmap()時必須要指定map_shared 或map_private。

fdopen()返回的檔案描述詞,代表欲對映到記憶體的檔案。

offset

檔案對映的偏移量,通常設定為0,代表從檔案最前方開始對應,offset必須是分頁大小的整數倍。

返回值:若對映成功則返回對映區的記憶體起始位址,否則返回map_failed(-1),錯誤原因存於errno 中。

錯誤**:

範例:利用mmap()來讀取/etc/passwd 檔案內容。

#include #include #include #include #include main()

Linux記憶體對映 mmap函式

linux提供了記憶體對映函式mmap,它把檔案內容對映到一段記憶體上 準確說是虛擬記憶體上 通過對這段記憶體的讀取和修改,實現對檔案的讀取和修改,先來看一下mmap的函式宣告 原型 void mmap void addr,size t length,int prot,int flags,int f...

Linux記憶體對映 mmap函式

mmap將乙個檔案或者其它物件對映進記憶體。檔案被對映到多個頁上,如果檔案的大小不是所有頁的大小之和,最後乙個頁不被使用的空間將會清零。mmap在使用者空間對映呼叫系統中作用很大。標頭檔案 include函式原型void mmap void start,size t length,int prot,...

mmap記憶體對映

記憶體對映是個很有用,也很有意思的思想。我們都知道作業系統分為使用者態和核心態,使用者態是不能直接和物理裝置打交道的,如果想把硬碟的一塊區域讀到使用者態,則需要兩次拷貝 硬碟 核心 使用者 但是記憶體對映的設計只需要發生一次的拷貝,大大的提高了讀取資料的效率。那麼記憶體對映的原理和核心是如何實現的呢...