linux共享記憶體使用例項

2021-05-22 16:23:00 字數 1462 閱讀 5222

三個檔案,乙個標頭檔案,乙個讀,乙個寫,用同乙個key值申請共享記憶體。

//shm.h

#ifndef _shm_com_h

#define _shm_com_h 1

#define text_sz 2048

struct shared_use_at

;struct kts

;#endif

//shm_write.c

#include

#include

#include

#include

#include

#include

#include

#include "shm.h"

int main()

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_at *)shared_memory;

while(running)

printf("enter 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);

}//shm_read.c

#include

#include

#include

#include

#include

#include

#include

#include "shm.h"

int main()

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_at *)shared_memory;

shared_stuff->written_by_you = 0;

while(running)}}

if(shmdt(shared_memory)==-1)

if(shmctl(shmid, ipc_rmid, 0)==-1)

exit(exit_success);

Linux 使用共享記憶體

1.共享記憶體與訊息佇列的區別 訊息佇列在實現訊息的收發時,首先由傳送程序從程序空間將資料複製到核心分配的資料緩衝區中,接受程序再從核心的緩衝區複製到程序的虛擬位址空間 共享記憶體是將核心分配的共享儲存區域對映到程序的位址空間實現的,沒有資料的複製過程,共享記憶體的訪問速度要比訊息佇列快 2.共享記...

linux共享記憶體的使用

linux共享記憶體和windows的共享記憶體邏輯上有很大區別,要注意一下幾點 標識描述 ipc excl 這個加入後,如果已經存在標識為key的共享記憶體則報錯返回 1 0如果是0 的話,就可以實現,如果共享記憶體不存在則返回失敗 1,否則直接建立返回成功 0666 這個識別符號很多人不知道啥意...

Linux 共享記憶體

一 概念 共享記憶體是被多個程序共享的一部分物理記憶體,是程序間共享資料的最快的一種方法。二 實現 分為兩個步驟 1 建立共享記憶體。2 對映共享記憶體。1 建立 int shmget key t key,int size,int shm 當key的取值為 ipc private 時,將建立一塊新的...