Content-Description: [** BIG-5 charset **] [GNU/Linux] ipcrm -- 清除 shm

[GNU/Linux] ipcrm -- 清除 shm

    */ 前言 /*

IPC -- Inter Proccess Channel,是在以 System V 系統上提供 個行程間溝通的方式之一。利用記憶體中 Shared Memory,Semaphore Array 和 Message Queue 來提供行程間通訊的管道。常見的例子 如一服務級行程所衍生的眾多子行程,可透過 IPC 的機制來互相 溝通。

ipcrm -- 當我們使用了 ipcs 檢視了 Shared Memory, Semaphore Array 和 Message Queue 的資訊,就可以利用 ipcrm 來清除不要 或不正確的 shm, sem 或 msg 內容。以筆者架 BBS 的經驗中,當 修改 BBS 程式後如果需要更動 shm 中的資料,就必須使用 ipcrm 來清除之前的 shm 了。ipcrm 與 ipcs 是同一位作者 krishna balasubramanian (balasub@cis.ohio-state.edu)。

    */ 路徑 /*

以筆者安裝的 RedHat Linux 7.0 為例,ipcrm 是放置在 /usr/bin 下。

    */ 所使用的 shared library /*

在筆者所使用的 RedHat Linux 7.0 下,ipcrm 所使用到的 shared library 有 libc.so, ld-linux.so。

    */ 使用說明及範例 /*

ipcrm 的使用相當簡單,當我們下此指令不加參數時會顯示使用的 方法:

[root]# ipcrm
usage: ipcrm {shm | msg | sem} id ...

因此要清除 shmid=0 的 shm 就是下指令 ipcrm shm 0;要清除 semid=0 的 sem 就是下指令 ipcrm sem 0;要清除 msgid=0 的 msg 就是下指令 ipcrm msg 0。

要注意的是,當該 ID 的 perms 不允許你作 ipcrm 時會回應 permission denied 的錯誤訊息。

而更詳細的資訊可以 man ipcrm 得到。

    */ 勘誤資訊 /*

本文如有謬誤或建議,請來信筆者的電子郵件信箱。

gjchen@csie.nctu.edu.tw 交大資工 陳俊哲