ipcs ipcrm ipcmk用法简介

在这里插入图片描述

大家好,我是 杰哥

ipcs ipcrm ipcmk用法简介

下面是我的gitee仓库,欢迎大家关注↓
gitee源码仓库链接跳转


ipcs和ipcrm程序

由于System V IPC的三种类型不是以文件系统中的路径名标识的,因此使用标准的ls和rm程序无法看到他们,也无法删除它们。不过实现了这些类型IPC的任何系统都提供两个特殊的程序:ipcs和ipcrm。ipcs输出有关System V IPC特性的各种信息,ipcrm则删除一个SystemV消息队列、信号量集或共享内存区。前者支持十来个命令行选项,它们决定报告哪种类型的IPC以及输出哪种信息,后者支持6个命令行选项。所有这些选项的详细信息可查阅它们的手册页面。

System V IPC不是Posix中的内容,因此这两个命令也未被Posix.2标准化。不过他们是Unix98的内容。

IPCS命令

命令简介

ipcs 是一个Linux命令,命令的全称是 Interprocess Communication Status,用于报告关于进程间通信(IPC)设施的状态信息。这些设施包括消息队列,信号量以及共享内存。在处理多线程或者多进程问题时,它能够提供大量有价值的信息。

语法格式

ipcs [resource-option...] [output-option]
ipcs -m|-q|-s -i <id>

功能概述

IPC是操作系统提供给进程之间进行数据交换的一种机制,它主要分为以下三种类型:

  1. 消息队列(Message Queues)
    消息队列是一个链表,存放在内核中并由消息队列标识符标识。Linux内核维护了一个消息队列和相关操作函数的集合,用户进程可以调用操作函数完成消息发送和接收。

  2. 信号量(Semaphores)
    信号量主要作为进程间以及同一进程不同线程之间的同步手段。

  3. 共享内存(Shared Memories)
    让任何需要的进程都能访问的内存区域。因为多个进程可以同时操作,所以必须通过某种同步操作,如信号量,来确保进程间互不干扰。

ipcs命令是Linux系统下自带的一个极好的工具,可以帮助我们查看当前系统下以上三项的使用情况,从而利于定位多进程通信中出现的通信问题。

命令简介

如果未指定任何选项与参数,默认的选项是“-a”,ipcs命令将会以简短的形式显示系统中当前活动的共享内存段、消息队列以及信号灯集合的信息。
在这里插入图片描述

如需分类查询某一特定进程间通信资源的详细信息,可以选用相应的“-m”、“-q”与“-s”选项。利用“-i”选项,还可以进一步指定一个具体的资源标识符,详细查询特定资源的有关信息。

利用“-t”、“-p”、“-c”、“-l”与“-u”选项,可以按时间、进程ID、资源创建者、访问限制以及汇总信息显示进程间通信资源。

“输出数据”一节给出了ipcs命令的部分输出字段及简单说明。

命令选项

-i, --id  与“-m”、“-q”或“s”选项一起使用时,显示特定的IPC资源。

-h, --help 显示命令的概述、用法与选项说明等帮助信息,然后退出。

-V, --version 显示版本信息并退出。

资源选项:
-m, --shmems 显示共享内存段的有关信息。

-q, --queues 显示消息队列的有关信息。
在这里插入图片描述

-s, --semaphores 显示信号灯数组的有关信息。

-a,–all  相当于同时指定了“-m”、“q”与“s”选项(默认选项),显示系统中当前活动的共享内存段、消息队列以及信号灯信息。

输出格式:
在这些选项中,只有一个生效:指定的最后一个

-c, --creator 显示IPC资源创建者的有关信息。

-l, --limits 显示共享内存段、消息队列和信号灯的各种限制。

-t, --time 显示各种时间信息。

-p, --pid 显示IPC创建者的进程ID。

-u, --summary 显示各种资源分配的汇总信息。

输出数据

shmid  共享内存段的标识符。

msqid  消息队列的标识符。

semid  信号灯的标识符。

key  进程间通信资源的键值,可以用作创建或删除IPC相应资源的参数。

owner  IPC资源的属主。

perms  IPC资源的访问权限,以八进制数值表示。

uid  IPC资源属主的用户名。

gid  IPC资源属主的用户组名。

cuid  IPC资源创建者的用户名。

cgid  IPC资源创建者的用户组名。

bytes  共享内存段的大小(单位为字节)。

nattch  当前加接相应共享内存段的进程数量。

status  共享内存段的状态,其中dest表示共享内存段即将删除或销毁(destroyed)。

cpid  共享内存段创建者的进程ID。

lpid  最近一个加接或移除共享内存段的进程的PID。

attached  最近一次加接有关共享内存段完成的时间。

detached  最近一次移除有关共享内存段完成的时间。

changed  最近一次修改共享内存段数据结构的时间。

used-bytes  相应消息队列中当前尚未处理的消息数量。

messages  相应消息队列中当前允许的待处理消息的最大字节数量。

lspid  最近一个向相应消息队列发送消息的进程的PID。

lrpid  最近一个从相应消息队列接收消息的进程的PID。

send  最近一次向相应消息队列发送消息的时间。

recv  最近一次从相应消息队列接收消息的时间。

change  最近一次创建或修改消息队列数据结构的时间。

last-op  最近一次操作信号灯的时间。

last-changed  最近一次修改信号灯数据结构的时间。

nsems  信号灯的数量。

IPCRM命令

命令名称: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删除信号灯

IPCMK命令

创建各种进程间的通信资源

语法格式

ipcmk [-M size] [-S sems] [-Q] [-p mode]
ipcmk -h

命令简介

ipcmk命令主要用于创建共享内存段、消息队列或信号灯数组等进程间通信(IPC)资源。

命令选项

-M size  创建一个指定字节数量的共享内存段。

-S sems  创建具有指定元素个数的信号灯数组。

-Q  创建一个消息队列。

-p mode  设置IPC资源的访问权限(默认值为0644)。

-h  显示命令的用法与选项说明等帮助信息,然后退出。

应用实例

  1. 创建一个20480字节的共享内存段,创建者与同组用户具有读写的访问权限。
ipcmk -M 204800 –p 0664  
Shared memory id: 655376
  1. 创建一个消息队列,任何人均有读写的访问权限。
ipcmk -Q –p 0666  
Message queue id: 0
  1. 创建一个具有10个元素的信号灯数组。
ipcmk –S 10  
Semaphore id: 131074 

ed memory id: 655376


2. 创建一个消息队列,任何人均有读写的访问权限。  
```shell
ipcmk -Q –p 0666  
Message queue id: 0
  1. 创建一个具有10个元素的信号灯数组。
ipcmk –S 10  
Semaphore id: 131074 

在这里插入图片描述

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值