linux 記憶體共享舉例

2021-06-03 16:38:02 字數 1447 閱讀 3640

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

#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 對映共享記憶體。1 建立 int shmget key t key,int size,int shm 當key的取值為 ipc private 時,將建立一塊新的...

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系統執行的每乙個程式,都是乙個程...