第13章 Posix共享記憶體區

2021-08-21 23:40:17 字數 1740 閱讀 4051

原始碼目錄

#include

#include

/* for mode constants */

#include

/* for o_* constants */

intshm_open

(const

char

*name,

int oflag, mode_t mode)

;int

shm_unlink

(const

char

*name)

; link with -lrt.

shm_unlink函式刪除乙個共享記憶體區物件的名字不會影響其底層支撐物件的現有引用,直到對於該物件的引用全部關閉為止,僅僅防止後續的open呼叫取得成功

#include

#include

inttruncate

(const

char

*path, off_t length)

;int

ftruncate

(int fd, off_t length)

;int

fstat

(int fd,

struct stat *buf)

;

對共享記憶體區物件

使用fstat獲取物件的資訊

#include

#include

#include

intstat

(const

char

*pathname,

struct stat *buf)

;int

fstat

(int fd,

struct stat *buf)

;int

lstat

(const

char

*pathname,

struct stat *buf)

;

struct stat 

;

#include

"cliserv2.h"

intmain

(int argc,

char

**argv)

}exit(0

);}

#include

"cliserv2.h"

intmain

(int argc,

char

**argv)

else

err_sys

("sem_trywait error");

}sem_wait

(&ptr->mutex)

; offset = ptr->msgoff[ptr->nput];if

(++(ptr->nput)

>= nmesg)

ptr->nput =0;

/* circular buffer */

sem_post

(&ptr->mutex)

;strcpy

(&ptr->msgdata[offset]

, mesg)

;sem_post

(&ptr->nstored);}

exit(0

);}

Posix共享記憶體區

1 概述 posix提供了兩種在無親緣關係程序間共享記憶體區的方法 者兩種方法多需要呼叫mmap,差別在於作為mmap的引數之一的描述符的獲取手段。2 posix共享記憶體區物件 posix共享記憶體區涉及以下兩個步驟要求 1 指定乙個名字引數呼叫shm open,以建立乙個新的共享記憶體區物件或開...

Posix共享記憶體區

posix提供了兩種在無親緣關係程序間共享記憶體區的方法 2 共享記憶體區物件 先有shm open開啟乙個posix ipc名字 也可以是檔案系統中的乙個路徑名 然後呼叫mmap將返回的描述符對映到當前程序的位址空間。者兩種方法多需要呼叫mmap,差別在於作為mmap的引數之一的描述符的獲取手段。...

POSIX共享記憶體

本文參考 嵌入式linux開發教程 和 linux unix系統程式設計手冊 共享記憶體是允許兩個不相關的程序訪問同乙個邏輯記憶體的程序間通訊方法,是在兩個正在執行的程序之間共享和傳遞資料的一種非常有效的方式。不同程序之間的共享記憶體通常安排為同一段物理記憶體。程序可以將同一段共享記憶體連線到它們自...