linux系統程式設計 實現共享記憶體

2021-10-19 11:25:29 字數 1802 閱讀 1714

一、相關的api

(1)shmget 建立或者獲取乙個共享記憶體,成功返回共享記憶體id,失敗返回-1。——建立共享記憶體

man手冊: man 2 shmget

key_t: 輸入 key就可以

size:共享記憶體的大小以兆對齊

flag:開啟佇列的方式,一般為ipc_creat

man手冊:man 2 shmat

shmid:共享記憶體的id

第二個一般寫0,讓linux核心幫我們自動的安排共享記憶體

第三個一般也寫0,對映進來的共享記憶體是可讀可寫的

shmat作用:共享記憶體掛載到程序或者程式的儲存空間,在儲存空間中,定義乙個變數,指向共享記憶體。

0666可讀可寫的許可權

(3) shmdt 斷開與共享記憶體的連線:成功返回0,失敗返回-1。——釋放共享記憶體

man手冊:man 2 shmdt

按照第四行寫

(4)shmctl 控制共享記憶體的資訊,成功返回0,失敗返回-1。——乾掉共享記憶體

man手冊:man 2 shmctl

第乙個是 id

第二個是指令

第三個一般寫0

二、**實現

(1)共享記憶體——寫

#include

#include

#include

#include

#include

#include

//int shmget(key_t key, size_t size, int shm***);

intmain()

shmaddr=

shmat

(shmid,0,

0);printf

("shmat ok\n");

strcpy

(shmaddr,

"bha hen shuai");

sleep(5

);//睡眠5秒

shmdt

(shmaddr)

;shmctl

(shmid, ipc_rmid,0)

;printf

("quit\n");

return0;

}

(2)共享記憶體——讀

#include

#include

#include

#include

#include

//int shmget(key_t key, size_t size, int shm***);

intmain()

shmaddr=

shmat

(shmid,0,

0);printf

("shmat ok\n");

printf

("data: %s\n"

,shmaddr)

;shmdt

(shmaddr)

;printf

("quit\n");

return0;

}

——@上官可編

linux系統程式設計 程序共享記憶體通訊

共享記憶體概述 共享記憶體,就是允許兩個或者多個不同的程序訪問同乙個給定的記憶體,因為資料不需要在程序複製,所以共享記憶體是最快的一種ipc,不同的程序將同一段物理位址對映到各自的程序中,如果乙個程序向共享記憶體寫資料,所做的改動將立即影響到可以訪問同一段共享記憶體的任何其他程序。注 當乙個程序在共...

系統程式設計之共享記憶體

1.概述 共享記憶體是程序間通訊中最簡單的方式之一。共享記憶體允許兩個或更多程序訪問同一塊記憶體,就如同 malloc 函式向不同程序返回了指向同乙個物理記憶體區域的指標。當乙個程序改變了這塊位址中的內容的時候,其它程序都會察覺到這個更改。2.共享記憶體的特點 1.共享記憶體是程序間共享資料的一種最...

《Linux系統程式設計 程序間通訊 共享記憶體》

共享記憶體是程序間通訊中最簡單的方式之一。共享記憶體允許兩個或更多程序訪問同一塊記憶體,就如同 malloc 函式向不同程序返回了指向同乙個物理記憶體區域的指標。當乙個程序改變了這塊位址中的內容的時候,其它程序都會察覺到這個更改。共享記憶體的特點 1 共享記憶體是程序間共享資料的一種最快的方法。乙個...