ipcs

显示IPC信息

信息来源: /proc/sysvipc/*

使用

ipcs -l # 实现SYSV IPC的系统限制
ipcs # 列出msg,shm,sem
ipcrm -q / -m / -s # 删除指定标识符的消息队列/共享内存段/信号量集
ipcrm -Q / -M / -S # 删除指定键值的消息队列/共享内存段/信号量集

sysvipc

SysV IPC 是一套基于 System V 标准 的经典进程间通信(IPC)机制

SysV IPC 包含三大核心机制,各自针对不同的通信场景:消息队列(Message Queues)、共享内存(Shared Memory)、信号量(Semaphores)

三者均通过 “键(Key)” 和 “标识符(ID)” 进行管理,且生命周期独立于创建进程(除非显式删除,否则会持续存在于系统中)。

Message Queues

消息队列

消息队列是一种 “异步通信” 机制:进程可以向队列中发送 “带类型的消息”,其他进程则按类型或顺序从队列中接收消息,无需双方同时运行。

由Linux msg系列系统调用创建

Shared Memory

由linux shm系列系统调用创建

Semaphores

信号量并非用于传递数据,而是一种 “进程同步与互斥” 工具:通过一个或一组 “计数器” 控制对共享资源(如共享内存、文件)的访问,防止多个进程同时操作导致的数据竞争。

由linux sem系列系统调用创建

kEY与ID

SysV IPC 的三大组件均通过 “键” 和 “标识符” 实现进程间的关联,这是其区别于其他 IPC 机制的核心特性。

键(Key):IPC 对象的 “名字”

键是一个 key_t 类型的整数(通常为 32 位),用于唯一标识系统中的一个 IPC 对象(消息队列、共享内存、信号量集),相当于 IPC 对象的 “全局名字”。

标识符(ID):IPC 对象的 “句柄”

标识符是进程访问 IPC 对象的 “句柄”,由内核在 msgget()/shmget()/semget() 调用时返回(如 msgid、shmid、semid)。