linux系統程式設計 記憶體對映區概念及相應函式

2021-10-02 23:35:15 字數 2734 閱讀 6962

引數

含義name

posix ipc名字,格式為/somename

oflag

標誌mode

許可權標誌

作用o_creat

沒有該物件則建立

o_excl

如果o_creat指定,但name不存在,就返回錯誤

o_nonblock

以非阻塞方式開啟訊息佇列

o_rdonly

唯讀o_rdwr

讀寫o_wronly

只寫o_trunc

若存在則截斷

許可權作用

s_iwusr

使用者/屬主寫

s_irusr

使用者/屬主讀

s_iwgrp

組成員寫

s_irgrp

組成員讀

s_iwoth

其他使用者寫

s_iroth

其他使用者讀

返回值含義

-1出錯

其他共享記憶體描述符

示例
引數

含義name

posix ipc名字

返回值含義

-1出錯0成功

引數含義

prot_exec

頁內容可以被執行

prot_read

頁內容可以被讀取這個許可權必須要有

prot_write

頁可以被寫入

prot_none

頁不可訪問,不能與檔案的開啟模式衝突

引數含義

map_shared

變動共享 (修改了記憶體資料會同步到磁碟)

map_private

變動私有(修改了記憶體資料不會同步到磁碟)

map_anon

匿名記憶體對映(匿名記憶體對映(親緣程序))

返回值含義

map_failed

失敗非map_failed

共享記憶體位址

int

munmap

(void

*start,size_t length)

no. 返回值 含義

1 0 成功

2 -1 失敗

#include

#include

#include

#include

#include

#include

#include

#include

intmain()

printf

("%s\n",(

char

*)buf)

;munmap

(buf,length)

;return0;

}

引數

含義fd

檔案描述描述符

bufstruct stat

no. 引數

含義st_mode

許可權st_size

大小st_uid

屬主id

st_guid

組id返回值

含義-1出錯0

成功

int fd=

open

(ar**[optind]

,o_rdwr);if

(-1==fd)

struct stat st;if(

-1==fstat

(fd,

&st)

)printf

("%s :size :%d\n"

,ar**[optind]

,st.st_size)

;return

0;

引數

含義fd

檔案描述描述符

length

檔案大小,如果原來的檔案大小比引數length大,超過的部分刪除。

返回值 	|含義
–|--

-1 |出錯

0 | 成功

if(-

1==ftruncate

(fd,new_size))if

(-1==

fstat

(fd,

&st)

)printf

("%s :size :%d\n"

,ar**[optind]

,st.st_size)

;close

(fd)

;

prot_read | prot_write什麼意思?

如果open的時候是o_creat,mmap時port引數指定prot_read | prot_write 時會怎樣?

檔案偏移量為1000時會怎麼樣?

mmap什麼情況呼叫失敗?:

可以open的時候o_creat乙個新檔案來建立對映區嗎?

mmap後關閉檔案描述符,對mmap有沒有影響

對buf越界操作會怎麼樣:

Linux系統程式設計 記憶體對映 mmap

mmap 系統呼叫在呼叫程序的虛擬位址空間中建立乙個新記憶體對映。對映分為兩種。檔案對映 檔案對映將乙個檔案的一部分直接對映到呼叫程序的虛擬記憶體中。一旦乙個檔案被對映之後就可以通過在相應的記憶體區域中操作位元組來訪問檔案內容了。對映的分頁會在需要的時候從檔案中 自動 載入。匿名對映 乙個匿名對映沒...

Linux系統程式設計之 mmap對映

共享記憶體 了解mmap 函式的使用 例項 include include include include include int main 拷貝資料 strcpy mem,hell0 釋放對映區 mummap mem,8 close fd 輸出 mem.txt檔案包含hello 如果char me...

Linux系統程式設計之程序間通訊二 記憶體對映區

fd 要對映的檔案的fd。通過open 函式得到 offset 對映的時候檔案指標的偏移量 返回值int munmap void addr,size t length 通過在記憶體中建立檔案的對映區實現兩個程序間通過該對映區通訊 a程序寫b程序讀,當a程序寫的東西比較多時可能會出現a沒寫完,b已經讀...