System IPC包括System V消息队列,System V信号量,System V共享内存区。
System V IPC使用一个key(key_t)作为他们名字,这个值由ftok函数通过路径名和一个id生成。
客户和服务器通过在路径名和id达成一致,双方就能通过调用ftok函数把pahtname和id映射到同一个Ipc键。
ipc_perm结构
内核为每个IPC对象维护一个ipc_perm的结构。
包括用户id,组id,权限,槽号,键等信息。
get函数(msgget,semget,shmget)创建一个IPC对象,并指定IPC权限,get函数返回一个IPC标识符,用来表示IPC对象,
IPC标识符不是特定进程的标识符(文件标识符是基于进程的标识符),而是基于系统的标识符。
不同进程获得的IPC标识符是相同的才可以进行通信。
内核限制
System IPC在内核有限制,比如消息队列的最大限制,每个信号量集的最大信号量数等。
管理员可以修改这些限制。