System V IPC
包括三种类型:
System V消息队列
System V信号灯
System V共享内存
(一) key_t键
System V使用key_t值作为它们的名字
ftok函数把一个已存在的路径名和一个整数标识符转换成一个key_t值
#include <sys/ipc.h>
key_t ftok(const char* pathname, int id);
成功时返回IPC键,失败时返回-1
ftok的典型实现是调用stat函数,然后组合以下值:
1) pathname所在的文件系统的信息(stat结构的st_dev成员)
2) 该文件在本文件系统内的索引节点号(stat结构的st_ino成员)
3) id的低8位(不能为0)
(二)ipc_perm结构
内核给每个IPC对象维护一个信息结构
1 struct ipc_perm{ 2 uid_t uid; // owner's user id 3 gid_t gid; // owner's group id 4 uid_t cuid; // creator's user id 5 gid_t cgid; // creator's group id 6 mode_t mode; // read-write permissions 7 ulong_t seq; // slot usage sequence number 8 }
(三)创建与打开IPC通道
1)从IPC键生成IPC标识符:
2)创建或打开一个IPC对象的逻辑: