共享記憶體 程序間通訊

2021-07-24 00:02:36 字數 1486 閱讀 8089

讀程序

#include

#include

#include

#include

#include

#include

#include

#include "shm_com.h"

int main(void)

/*對映共享記憶體*/

shared_memory=shmat(shmid,(void *)0,0);

if(shared_memory==(void *)-1)

printf("memory attached at %x\n",(int)shared_memory);

/*讓結構體指標指向這塊共享記憶體*/

shared_stuff=(struct shared_use_st *)shared_memory;

/*控制讀寫順序*/

shared_stuff->written_by_you=0;

/*迴圈的從共享記憶體中讀資料,直到讀到「end」為止*/

while(running)

}}/*刪除共享記憶體*/

if(shmdt(shared_memory)==-1)

exit(exit_success);}

寫程序#include

#include

#include

#include

#include

#include

#include

#include "shm_com.h"

int main(void)

/*對映共享記憶體*/

shared_memory=shmat(shmid,(void *)0,0);

if(shared_memory==(void *)-1)

printf("memory attached at %x\n",(int)shared_memory);

/*讓結構體指標指向這塊共享記憶體*/

shared_stuff=(struct shared_use_st *)shared_memory;

/*迴圈的向共享記憶體中寫資料,直到寫入的為「end」為止*/

while(running)

printf("ener some text:");

fgets(buffer,bufsiz,stdin);

strncpy(shared_stuff->some_text,buffer,text_sz);

shared_stuff->written_by_you=1;

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

}/*刪除共享記憶體*/

if(shmdt(shared_memory)==-1)

exit(exit_success);}

標頭檔案

#define text_sz 2048

struct shared_use_st

;

程序間通訊 共享記憶體

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

程序間通訊 共享記憶體

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

程序間通訊 共享記憶體

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