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的一些输出:

14.6 小结
在本章中,介绍了3种进程间通信的机制,它们最早出现在UNIX System V.2版本中,并从linux的早起版本开始就已用.这些机制是信号量,共享内存和消息队列.介绍了它们所提供的复杂功能以及这些功能是如何提供的.一旦理解了这些功能,它们就可以为许多进程间通信的需求提供有力的解决方案.
版权声明:本文为博主原创文章,未经博主允许不得转载。
linux程序设计——IPC状态命令(第十四章)
原文:http://blog.csdn.net/yiranant/article/details/46959787