程序間通訊 共享記憶體

2021-09-25 20:58:18 字數 1075 閱讀 2000

1、共享記憶體:兩個程序在記憶體的同一塊區域具備管理的許可權,同時可以對記憶體進行讀寫操作,但是由於這樣很難做到同步,所以要配合一些其他控制程序的,例如訊號量

2、共享記憶體的函式:

int shmget(key_t key, size_t size, int shm***);                  建立共享記憶體

void *shmat(int shmid, const void *shmaddr, int shm***);               掛接共享記憶體 

int shmdt(const void *shmaddr);              關聯共享記憶體

int shmctl(int shmid, int cmd, struct shmid_ds *buf);            銷毀共享記憶體 

3、例項

shma檔案

#include#include#include#include#include#include#include"sem.h"

int main()

; printf("input\n");

fgets(buff,128,stdin);

strcpy(s,buff);

if(strncmp(buff,"end",3)==0)

sem_v();

}shmdt(s);

exit(0);

}

shmb檔案: 

#include#include#include#include#include#include#include"sem.h"

int main()

printf("p=%s\n",p);

}shmdt(p);

sem_destroy();

shmctl(shmid,ipc_rmid,null);

exit(0);

}

程序間通訊 共享記憶體

下面是自己寫的乙個簡單的共享記憶體的程序間通訊的例子。共享記憶體是用於程序間大量資料共享的一種方法。include include include include include include int main if buf1 shmat shmid,0,0 void 1 strcpy buf1,...

程序間通訊 共享記憶體

共享記憶體是被多個程序共享的一部分物理記憶體。共享記憶體是程序間共享資料的一種最快的方式,乙個程序向共享記憶體區域寫入資料,共享這個記憶體區域的所有程序就可以立刻看到其中的內容。共享記憶體實現分兩個步驟 建立共享記憶體,使用shmget函式 對映共享記憶體,使用shmat函式 共享記憶體是一種最為高...

程序間通訊 共享記憶體

共享記憶體允許兩個或更多程序共享一塊給定的儲存區,因為資料不需要在不同程序之間訪問,這是最快的一種ipc 傳輸資訊量很大,通過記憶體空間對映程序空間實現,若伺服器程序正在將資料放入共享儲存區,則在它做完這一操作之前,客戶程序不應取這些資料,通常訊號量用來實現對共享儲存訪問的同步。核心為每個共享儲存段...