共享記憶體簡單入門

2021-06-05 16:23:09 字數 972 閱讀 7050

共享記憶體是unix下多程序通訊的一種方式,可以被不同的cpu訪問。多個程式間也可以通過共享記憶體傳遞資訊

共享記憶體shell操作

ipcs用於檢視共享記憶體資訊

------ shared memory segments --------

key        shmid      owner      perms      bytes      nattch     status     

0x0143b800 196608     oracle    640        239075328  50                  

ipcrm用於刪除共享記憶體資訊,如要刪除以上共享記憶體,可使用以下命令

ipcrm -m 0x0143b800

ipcrm -s用於刪除訊號量

共享記憶體函式操作

int shmget( key_t key, size_t size, int flag );

shmget函式用於建立或者開啟一塊共享記憶體,key用於標識該記憶體,是唯一的,由於共享記憶體是存在於核心的。

所以分配記憶體時,系統會分配可以滿足size長的頁數,最後乙個頁的部分剩餘記憶體是不可用。

int shmctl( int shm_id, int cmd, struct shmid_ds *buf );

shmctl用於共享記憶體的操作,包括鎖定共享記憶體,解鎖共享記憶體,獲取shmid_ds結構,給shmid_ds賦值等。

void *shmat( int shm_id, const void *addr, int flag );

使用函式shmat將乙個已經存在的共享記憶體段載入到本程序空間

int shmdt( void *addr);

shmdt將指定的共享記憶體段從當前程序空間中解除安裝出去。

在使用共享記憶體時兩個程序同時讀寫該共享記憶體,必須注意協調使用,比如使用同步或者互斥手段,共享記憶體中一條資訊的結尾都是以字串的預設結束符,這點必須注意。

共享記憶體IPC入門學習

系統建立ipc通訊 如訊息佇列 共享記憶體時 必須指定乙個id值。通常情況下,該id值通過ftok函式得到。ftok原型如下 key t ftok char fname,int id fname就時你指定的檔名 該檔案必須是存在而且可以訪問的 id是子序號,雖然為int,但是只有8個位元被使用 0 ...

共享記憶體最簡單說明

開發中,往往多個程序要對同一塊記憶體進行讀寫操作,這裡可以用共享記憶體實現。服務端 include stdafx.h include define buf size 64 define share memory name test include using namespace std int tm...

《共享記憶體》Linux程序間通訊入門

執行 共享記憶體要想好用,共享的那段記憶體,需要用資料結構和佇列組織起來,加上讀寫索引和資料有效標誌 已讀和未讀 可讀 下面的這個示例 是我初學時的,適合入門和了解使用流程。寫端 include include include include include include include incl...