三個檔案,乙個標頭檔案,乙個讀,乙個寫,用同乙個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系統執行的每乙個程式,都是乙個程...