Linux 共享記憶體

2021-06-13 07:54:36 字數 1289 閱讀 8526

一、概念

共享記憶體是被多個程序共享的一部分物理記憶體,是程序間共享資料的最快的一種方法。

二、實現

分為兩個步驟:

1、建立共享記憶體。

2、對映共享記憶體。

1、建立

int shmget(key_t key, int size, int shm***)

當key的取值為 ipc_private 時,將建立一塊新的共享記憶體。shm***至少設為s_irusr|s_iwusr否則會出現讀寫錯誤。成功返回記憶體標示符,失敗返回-1。

2、對映

int shmat(int shmid, char *shmaddr, int flag)

shmaddr為共享記憶體的起始位址。flag對記憶體的操作模式。通常命令可寫為:shmat(shmid,null,0);

成功返回共享記憶體的起始位址,失敗返回-1。

三、舉例

[cpp]view plain

copy

print?

#include

#include

#include

#include

#include

#define perm s_irusr|s_iwusr

int main(int argc ,char *argv)  

if((shmid=shmget(ipc_private,1024,perm))<0)  

char *p;  

pid=fork();  

if(pid ==0)  

else  

return 0;  

}  

#include#include#include#include#include#define perm s_irusr|s_iwusr

int main(int argc ,char *argv)

if((shmid=shmget(ipc_private,1024,perm))<0)

char *p;

pid=fork();

if(pid ==0)

else

return 0;

}

子程序寫入argv[1],父程序輸出argv[1]的值。

linux共享記憶體

linux共享記憶體使用 標頭檔案 include 1 建立共享記憶體 int shmget key t key,size t size,int shm 建立成功以後會返回乙個共享記憶體id,建立失敗返回 1。2 獲取共享記憶體 void shmat int shmid,const void shm...

linux 共享記憶體

共享記憶體解決的問題是 任意兩個程序之間的通訊如果是有名管道,是沒有辦法對管道中間的資料獲取讀和寫操作的,只能是兩段的資料,那麼如何對所有的資料進行操作 共享記憶體 共享記憶體也是通過核心來完成 命令 ipcs m p s 共享記憶體的工作機制如下所示 首先linux系統執行的每乙個程式,都是乙個程...

LINUX共享記憶體

共享記憶體允許兩個或多個程序共享給定的儲存區域。它是程序間共享資料最快的一種方法。通過共享記憶體,程序可以將一段記憶體連線到自己的儲存空間。所有程序都可以訪問共享記憶體中的資料,共享記憶體中的任何修改,所做的改動將立刻被可以訪問該段共享記憶體的程式看到。共享記憶體並未給資料提供同步機制,所以常常需要...