一、概念
共享記憶體是被多個程序共享的一部分物理記憶體,是程序間共享資料的最快的一種方法。二、實現
分為兩個步驟:1、建立1、建立共享記憶體。
2、對映共享記憶體。
int shmget(key_t key, int size, int shm***)2、對映當key的取值為 ipc_private 時,將建立一塊新的共享記憶體。shm***至少設為s_irusr|s_iwusr否則會出現讀寫錯誤。成功返回記憶體標示符,失敗返回-1。
int shmat(int shmid, char *shmaddr, int flag)shmaddr為共享記憶體的起始位址。flag對記憶體的操作模式。通常命令可寫為:shmat(shmid,null,0);
成功返回共享記憶體的起始位址,失敗返回-1。
三、舉例
[cpp]view plaincopy
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;
}
子程序寫入argv[1],父程序輸出argv[1]的值。#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;
}
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共享記憶體
共享記憶體允許兩個或多個程序共享給定的儲存區域。它是程序間共享資料最快的一種方法。通過共享記憶體,程序可以將一段記憶體連線到自己的儲存空間。所有程序都可以訪問共享記憶體中的資料,共享記憶體中的任何修改,所做的改動將立刻被可以訪問該段共享記憶體的程式看到。共享記憶體並未給資料提供同步機制,所以常常需要...