「ipcrm(1)」-

  LINUX MANUAL PAGES

删除某些IPC资源

命令语法格式

ipcrm [options]

ipcrm {shm|msg|sem} id…

命令描述

命令ipcrm从系统中删除System V进程间通信(IPC)对象和相关的数据结构。要删除此类对象,您必须是超级用户,或对象的创建者或所有者。

System V IPC对象有三种类型:共享内存、消息队列、信号量。删除消息队列或信号量对象是立即的(无论任何进程是否仍保留对象的IPC标识符)。只有当所有当前连接的进程从其虚拟地址空间分离(shmdt(2))对象后,才会删除共享内存对象。

支持两种语法样式:

  • 旧的Linux历史语法指定一个“三字母”关键字,指示要删除哪个类对象,后跟一个或多个此类对象的IPC id。
  • 符合SUS的语法允许在单个命令行中指定所有三种类型的零个或多个对象,其中对象由key或id指定(参见下文)。key和id都可以用十进制、十六进制(用初始’0x’或’0X’指定)、八进制(用初始’0’指定)来指定。

手册shmctl(2),msgctl(2)和semctl(2)中描述了删除的细节。可以使用ipcs(1)找到key和id。

命令支持的选项及含义

-a, –all [shm] [msg] [sem]
删除所有资源。提供选项参数时,仅对指定的资源类型执行删除操作。

警告! 如果您不确定使用资源的软件如何对丢失的对象进行反应,请不要使用-a选项。 有些程序在启动时创建这些资源,可能没有任何代码来处理意外的消失。

-M, –shmem-key shmkey
执行最后一次分离后,删除使用shmkey创建的共享内存段。

-m, –shmem-id shmid
执行最后一次分离后,删除由shmid标识的共享内存段。

-Q, –queue-key msgkey
移除使用msgkey创建的消息队列。

-q, –queue-id msgid
移除使用msgid标识的消息队列。

-S, –semaphore-key semkey
删除使用semkey创建的信号量。

-s, –semaphore-id semid
删除使用semid标识的信号量。

-h, –help
显示帮助信息。

-V, –version
显示版本信息。

注意事项

在第一个Linux实现中,命令ipcrm使用了弃用语法(旧语法)。之后添加了ipcrm的其他*nix实现中存在的功能,即通过key(不仅仅是标识符)删除资源的能力,以及遵循相同的命令行语法的能力。 为了向后兼容,仍支持以前的语法。

相关手册

ipcmk(1), ipcs(1), msgctl(2), msgget(2), semctl(2), semget(2), shmctl(2), shmdt(2), shmget(2), ftok(3)

参考文献

  • man 1 ipcrm, Version ipcrm from util-linux 2.32

更新日志

  • 07/11/2018 创建文章