LINUX 共享記憶體

2021-10-01 19:27:46 字數 1144 閱讀 2507

共享記憶體是linux程序間通訊的一種手段,即協助程序間通訊

1.使用int shmget(ket_t key ,size_t size , int shm***), 向系統申請共享記憶體,大小為size位元組,並且獲取程序的操作識別符號,通過返回值返回。

int shmid = shmget(key , 1024 ,ipc_creat | 0644 );
ipc_creat:建立檔案

0644:給檔案設定使用者的讀寫許可權

shm_id :獲取的共享記憶體空間識別符號通過shmget()申請的共享記憶體空間不能被任何程序訪問,shmat就是將該共享記憶體空間鏈結到當前程序的位址空間。2.void *shmat(int shm_id, const void *shm_addr, int shm_***);

3.int shmctl(int shm_id, int command, struct shmid_ds *buf);

4.int shmdt(const void *shmaddr)

#include #include #include int key=0x12345;

int main()

//建立shmid_ds buf 接收共享記憶體資訊

struct shmid_ds buf;

//int shmctl(int shmid, int cmd, struct shmid_ds *buf);

//cmd:ipc_stat :獲取shmid共享記憶體空間的資訊,將其儲存在buf中

shmctl(shmid,ipc_stat,&buf);

printf("shmid.size:->%ld\n",buf.shm_segsz);

//第一次建立完共享記憶體時,

//它還不能被任何程序訪問,

//shmat()函式的作用就是用來啟動對該共享記憶體的訪問,

//並把共享記憶體連線到當前程序的位址空間

void* lp = shmat(shmid,null,0);

if(!lp)

while(1)

shmdt(lp);

shmctl(shmid,ipc_rmid,null);

return 0;

}

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