關於System V進程通信內核對象的刪除

System v ipc的缺點:

當進程結束時,不會自動刪除進程通信的內核對象,並且能夠使用ipcs命令查看內核對象,如下:
在這裏插入圖片描述
由於進程通信內核對象也屬於操作系統的資源,如果長期佔用並且不使用確實是對操作系統資源的浪費,因此對於不再使用的進程通信內核對象應當及時刪除,那麼如何刪除呢?

(1)重啓OS,沒啥大毛病,但是不方便。
(2)當進程使用完畢後,調用相應的系統API進行刪除,當然這裏需要注意的是調用的時機,必須是使用完成後。
(3)使用ipcs命令,是相對簡單可行的方法:

(1)刪除消息隊列
ipcrm -Q key       //按照key刪除
ipcrm -q msgid     //按照msgid刪除
(2)刪除共享內存
ipcrm -M key       //按照key刪除
ipcrm -m msgid     //按照標識符刪除 
(3)刪除信號量
ipcrm -S key       //按照key刪除
ipcrm -s msgid     //按照標識符刪除

舉例分別按key刪除和按msgid刪除的消息隊列的過程:

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章