system-v IPC共享記憶體通訊

Jiangson發表於2024-04-25

目錄
  • system v IPC簡介
  • 共享記憶體需要用到的函式介面
    • shmget函式--獲取物件ID
    • shmat函式--獲得對映空間
    • shmctl函式--釋放資源
  • 共享記憶體實現思路
  • 注意

system v IPC簡介

訊息佇列、共享記憶體和訊號量統稱為system v IPC(程序間通訊機制),V是羅馬數字5,是UNIX的AT&T分支的其中一個版本,一般稱它們為IPC物件。這些物件的操作介面比較類似,在系統中它們都會使用一種名為key的鍵值來統一標識。程序每次“開啟”一個IPC物件,就會獲得一個表徵這個物件的ID,ID可以操作這個物件。IPC的物件是唯一的,但是ID是可變的。

共享記憶體需要用到的函式介面

shmget函式--獲取物件ID

image

shmat函式--獲得對映空間

image

shmctl函式--釋放資源

image
shmid: 共享記憶體段的識別符號,通常是由shmget()函式返回的共享記憶體識別符號。
cmd: 控制命令,用於指定要執行的操作。常見的控制命令包括:
IPC_STAT: 獲取共享記憶體段的狀態資訊,並將其儲存在struct shmid_ds *buf中。
IPC_SET: 設定共享記憶體段的狀態資訊,buf中包含要設定的新值。
IPC_RMID: 刪除共享記憶體段。

共享記憶體實現思路

image

注意

共享記憶體是sytem-v IPC 中通訊效率最高的,保護性不高。

相關文章