引數
含義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已經讀...