System V IPC

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对象的逻辑:

posted @ 2014-05-21 14:49  paullam  阅读(276)  评论(0编辑  收藏  举报