第3章 System V IPC
3.1 概述
System V IPC函数:
3.2 key_t和ftok函数
key_t是System V IPC的外部标识符,又称为IPC键,通过键,多个进程在同一个IPC对象上会合
ftok函数将路径名和整数标识符转换为key_t值
#include <sys/ipc.h> key_t ftok(char *pathname,int id)
客户与服务器在pathname和id上达成一致,则双方通过调用ftok函数获取同一个IPC键
三个get函数中(msgget、semget、shmget)使用key和flag参数,来创建或获取一个IPC对象,返回int型标识符
a)key=IPC_PRIVATE则创建
b)key未与某个IPC对象相关联且flag中指定IPC_CREAT位则创建
3.3 ipc_perm结构
ipc_perm结构规定了ipc对象的所有者和权限
struct ipc_perm { uid_t uid; //IPC对象owner's euid gid_t gid; // owner's egid uid_t cuid; //creator's euid gid_t cgid; //creator's egid mode_t mode; //权限 0400|0200 | 0040|0020 |0004|0002 ulong_t sep; key_t key; };
3.4 创建与打开IPC通道
从IPC键到IPC标识符:
打开一个IPC对象的逻辑流程: