14.5 IPC状态命令
虽然X/Open规范并没有定义它们,但大多数linux系统都提供了一组命令,用于从命令行上访问IPC信息以及清理游离的IPC机制.它们是ipcs和ipcrm命令,这两个命令对于开发程序非常有用.IPC机制一个让人烦恼的问题是:编写错误的程序或者因为某些原因而执行失败的程序把它的IPC资源(如消息队列中的数据)遗留在系统中,并且这些资源在程序结束后很长时间仍然在系统中游荡.这将导致对程序的新调用执行失败,因为程序期望以一个干净的系统来启动,但事实上却发现一些遗留的资源.状态命令(ipcs)和删除命令(ipcrm)提供了一种检查和清理IPC机制的方法.
14.5.1 显示信号量状态
要检查系统中信号量的状态,可以使用命令ipcs -s.如果系统中有信号量存在,就会给出如下格式的输出:$ ipcs -s
可以用命令ipcrm来删除那些因意外情况而被程序遗留在系统中的信号量.要删除上面的信号量,使用的命令(在linux系统中)如下所示:
$ ipcrm -s 768
14.5.2 显示共享内存状态
类似于信号量,许多系统提供了命令行程序来访问共享内存的细节情况.它们是命令ipcs -m和ipcrm -m<id>下面是一些ipcs -m命令的样本输出:
$ ipcs -m
ipcrm -m <id>命令的作用是删除共享内存.如果程序因运行失败而未清理共享内存,这个命令就很有用了.
14.5.3 显示消息队列状态
用于消息队列的命令是ipcs -q和ipcrm -q <id>下面是命令ipcs -q的一些输出: