POSIX IPC 详解:共享内存、信号量与消息队列
1. POSIX IPC 概述
POSIX IPC(Inter-Process Communication)标准及其相关应用编程接口(APIs)提供了与 System V IPC 类似的功能,包括共享内存、信号量和消息队列。不过,它们在实现上有很大不同。
1.1 与 System V IPC 的区别
- 命名方式:POSIX IPC 基于 POSIX IPC 名称,类似文件名,但不一定是文件系统中的实际文件。而 System V IPC 需要使用键值(如通过
ftok(3C)函数生成)来获取所需 IPC 资源的标识符。 - 内核参数:POSIX IPC 代码不需要(也没有)内核可调参数,每个进程的打开文件数量和内存地址空间限制是可能的限制因素。
1.2 POSIX IPC 接口
POSIX IPC 为三种 IPC 设施提供了相应的 API,如下表所示:
| 信号量 | 消息队列 | 共享内存 |
|---|---|---|
| sem_open | mq_open | shm_open |
| sem_close | mq_clo |