在unix/linux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清楚而引起一些问题。
ipcs
ipcrm [-m|-s|-q|-a] id。
-m 列出共享内存,
-s 列出共享信号量,
-q 列出共享队列。
-a 全部列出
ipcrm
使用方式:
ipcrm [ -M key | -m id | -Q key | -q id | -S key | -s id ] ...
说明:删除消息队列、共享内存、信号灯
参数:
-M 以shmkey删除共享内存
-m 以shmid删除共享内存
-Q 以msgkey删除消息队列
-q 以msgid删除消息队列
-S 以semkey删除信号灯
-s 以semid删除信号灯
下面来看操作实例
suse-24:~ # ipcs -a
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 32768 gdm 600 196608 2 dest
0x00000000 32799 ora 602 7864608 5 dest
------ Semaphore Arrays --------
key semid owner perms nsems
0x4d018352 0 root 600 8
0x00000000 4128769 sybase 777 250
0x00000000 4194306 sybase 777 250
------ Message Queues --------
key msqid owner perms used-bytes messages
suse-24:~ # ipcrm -m 32799
suse-24:~ # ipcrm -s 4128769
在上面示例示例中: 首先用ipcs命令列出了共享内存、共享队列,共享信号量。
显示出当前系统中有共享内存,共享信号量,没有共享队列。
然后执行ipcrm -m 32799 清除共享semid=32799的共享内存。
执行ipcrm -s 4128769 清除共享信号量semid=4128769的共享信号量。