高级进程间通信:System V IPC 详解
1. 引言
在进程间通信(IPC)领域,有多种机制可供选择。其中,System V IPC 是一种较为传统的方式,它涵盖了消息队列、信号量集和共享内存段等对象。下面将详细介绍 System V IPC 的相关内容。
2. System V IPC 概述
存在两组用于消息、信号量和共享内存的系统调用,较旧的一组通常称为 System V IPC,较新的一组称为 POSIX IPC。这里主要聚焦于 System V IPC。
2.1 System V IPC 对象
System V IPC 有三种对象:消息队列、信号量集和共享内存段。它们并非文件,有自己的命名方案、生命周期规则和权限系统。其主要特点如下:
- 仅存在于单台机器内,无法用于网络通信。
- 生命周期与内核相同,重启时会被销毁。
- 通过整数标识符访问对象,该标识符在对象生命周期内固定。任何知道标识符的进程都可直接使用它访问对象,无需先打开对象,这与文件描述符不同,文件描述符是进程的属性,进程结束时会消失。
- 没有 i - 节点或路径名,因此不能使用传统的文件和目录操作系统调用,如 unlink、stat、read 或 write。
所有三种对象都有形式为 Xget 和 Xctl 的系统调用,其中 X 可以是 msg、sem 或 shm。具体的六个调用为 msgget、semget、shmget、msgctl、semctl 和 shmctl。此外,还有五个调用:msgsnd 和 msgrcv 用于发送和接收消息,semop 用于操作信号量集,shmat 和 smdt
超级会员免费看
订阅专栏 解锁全文
2269

被折叠的 条评论
为什么被折叠?



