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系列系统调用创建
Semaphores
信号量并非用于传递数据,而是一种 “进程同步与互斥” 工具:通过一个或一组 “计数器” 控制对共享资源(如共享内存、文件)的访问,防止多个进程同时操作导致的数据竞争。
由linux sem系列系统调用创建
kEY与ID
SysV IPC 的三大组件均通过 “键” 和 “标识符” 实现进程间的关联,这是其区别于其他 IPC 机制的核心特性。
键(Key):IPC 对象的 “名字”
键是一个 key_t 类型的整数(通常为 32 位),用于唯一标识系统中的一个 IPC 对象(消息队列、共享内存、信号量集),相当于 IPC 对象的 “全局名字”。
标识符(ID):IPC 对象的 “句柄”
标识符是进程访问 IPC 对象的 “句柄”,由内核在 msgget()/shmget()/semget() 调用时返回(如 msgid、shmid、semid)。