Linux共享記憶體的管理

2022-03-23 00:18:13 字數 1378 閱讀 8356

在程序通訊應用中會用到共享記憶體,這就涉及到了ipc,與ipc相關的命令包括:ipcs、ipcrm(釋放ipc)。ipcs命令是linux下顯示程序間通訊設施狀態的工具。我們知道,系統進行程序間通訊(ipc)的時候,可用的方式包括訊號量、共享記憶體、訊息佇列、管道、訊號(signal)、套接字等形式[2]。使用ipcs可以檢視共享記憶體、訊號量、訊息佇列的狀態。

當下系統是centos,執行ipcs命令檢視

說明:具體的用法總結如下:

1、顯示所有的ipc設施

# ipcs -a
2、顯示所有的訊息佇列message queue

# ipcs -q
3、顯示所有的訊號量

# ipcs -s
4、顯示所有的共享記憶體

# ipcs -m
5、顯示ipc設施的詳細資訊

# ipcs -q -i id
id 對應shmid、semid、msgid等。-q對應設施的型別(佇列),檢視訊號量詳細情況使用-s,檢視共享記憶體使用-m。

6、顯示ipc設施的限制大小

# ipcs -m -l
-m對應設施型別,可選引數包括-q、-m、-s。

7、顯示ipc設施的許可權關係

# ipcs -c

# ipcs -m -c

# ipcs -q -c

# ipcs -s -c

8、顯示最近訪問過ipc設施的程序id。

# ipcs -p

# ipcs -m -p

# ipcs -q -p

9、顯示ipc設施的最後操作時間

# ipcs -t

# ipcs -q -t

# ipcs -m -t

# ipcs -s -t

10、顯示ipc設施的當前狀態

# ipcs -u
linux上的ipcs命令,不支援unix上的-b、-o指令,同樣unix中不支援-l、-u指令,所以在編寫跨平台的指令碼時,需要注意這個問題。

刪除ipc

ipcrm -m| -q| -s shm_id
例如,我們在以0x12345678為key建立了乙個共享記憶體,可以直接使用ipcrm -m 0x12345678來刪除共享記憶體區域。

下面的命令可以釋放所有已分配的共享記憶體:

ipcs -m | awk '

$2 ~ /[0-9]+/

' | while read s; do sudo ipcrm -m $s; done

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