程序間通訊之共享記憶體

2021-08-19 02:23:54 字數 1109 閱讀 2569

共享記憶體是執行在同一機器上的程序間通訊最快的方式,因為資料不需要再不同的程序間複製。通常由乙個程序建立一塊共享記憶體區,其餘程序對這塊記憶體區進行讀寫。

示例1.1

#include #include #include #include #define ipc_key 0x00001234

int shm_id = -1;

int main(int argc, char *argv)

void *ret_add = null;

ret_add = shmat(shm_id, null, 0);

if (-1 == (int)ret_add)

int i = 0;

while (1)

shmdt(ret_add);

shmctl(shm_id, ipc_rmid, null);

return 0;

}

示例1.2

#include #include #include #include #define ipc_key 0x00001234

int shm_id = -1;

int main(int argc, char *argv)

void *ret_add = null;

ret_add = shmat(shm_id, null, 0);

if (-1 == (int)ret_add)

int i = 0;

while (1)

return 0;

}

1.使用shmget建立共享記憶體(若已存在則開啟共享記憶體)

2.使用shmat將共享記憶體對映到程序空間中

3.對共享記憶體進行讀寫

4.使用shmdt對共享記憶體解除對映

5.使用shmctl控制ipc_rmid來刪除共享記憶體

linux檢視共享記憶體資訊:ipcs -m

程序間通訊之共享記憶體

此程式實現兩個普通程序間通過共享記憶體來進行通訊,共享記憶體能夠進行大資料量的通訊,這一點事訊息佇列無法比擬的。在這裡同時使用了訊號量來保證兩個程序間的讀寫同步。傳送端源 include include include include include include include include ...

程序間通訊之共享記憶體

1.概念 共享記憶體就是多個程序的位址空間對映到同乙個物理記憶體,多個程序都能看到這塊物理記憶體,共享記憶體可以提供給伺服器程序和客戶程序之間進行通訊,不需要進行資料的複製,所以速度最快。2.共享記憶體操作需要的函式 1 我們需要利用ftok函式生成key識別符號。key t ftok const ...

程序間通訊之共享記憶體

ipc物件這個概念需要理解,因為好多書或者料就直接說ipc就是共享記憶體 訊息佇列 訊號燈集,其實ipc是一種機制,這種機制提供了程序間通訊的通道,那麼為什麼加個system v呢,那是因為在system v 系統的四個版本中提出的程序通訊的ipc這種機制。所以叫做system v ipc。目前li...