进程间通信第三章(System V IPC)

来源:互联网 发布:曲柄摇杆机构优化设计 编辑:程序博客网 时间:2024/05/16 13:54

1.概述

System V IPC的三种类型:

System V消息队列

System V信号量

System V共享内存区

2.key_t键和ftok函数

三种类型的System V IPC使用key_t键作为它们的名字,key_t在头文件<sys/types.h>定义,通常至少为32位整数值。

函数ftok把一个已存在的路径名和一个整数标识符转换成一个key_t值,称为IPC键。

ftok的典型实现调用stat函数,然后组合以下三个值:

pathname所在的文件系统的信息(stat结构的st_dev成员)

该文件在文件系统的索引节点号(stat结构的st_ino成员)

id的低序8位(不能为0)

由此,id在IPC键的高序8位,st_dev的低序12位IPC在键的接下来的12位,st_ino的低序12位在最后

3.ipc_perm结构

内核给每个IPC对象维护一个信息结构,其内容跟内核给文件维护的信息类似。该结构以及System V IPC函数使用的较为明显的常数值定义在<sys/ipc.h>头文件中。

4.创建与打开IPC通道

创建或打开IPC对象有三个函数:msgget、semget、shmget,它们的第一个参数类型为key_t,对于key值应用程序有两种选择:

调用ftok,给它传递pathname和id。

指定key为IPC_PRIVATE,这将保证创建一个新的、唯一的IPC对象。

getXXX函数都有一个名为oflag的参数,这个参数可以创建一个新的IPC对象也可以访问一个已存在的IPC对象,具体规则如下:

设置oflag参数的IPC_CREATE位但不设置它的IPC_EXCL位,如果所指定的IPC对象不存在,就创建一个新的对象,否则返回该对象。

同时设置oflag的IPC_CREATE和IPC_EXCL位时,如果所指定键的IPC对象不存在,就创建一个新的对象,否则返回一个EEXIST错误。

5.IPC权限

与Posix的IPC权限大体相同

6.ipcs和ipcrm程序

ipcs输出有关System V IPC特性的各种信息,ipcrm则删除一个System V消息队列、信号量集或共享内存区。


0 0
原创粉丝点击