第3章 System V IPC

3.1 概述

System V IPC函数:

第3章 System V IPC_第1张图片

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标识符:

第3章 System V IPC_第2张图片 

打开一个IPC对象的逻辑流程:

第3章 System V IPC_第3张图片

 

你可能感兴趣的:(System)