一、进程间通信的技术
linux进程间的通信技术主要有消息队列、互斥量和共享内存。
二、IPC结构、键和标示符
每一种通信技术均有对应的ipc结构体,键是一个非负整数,是ipc结构的外部名,标示符是ipc结构的内部名,新建或者获取一个标示符时需要键作为输入参数。
进程间通信在调用接口时都要传入标示符参数,因此服务进程和客户端进程都要获取标示符,获取标示符的方式有两种:
①通过键产生
②直接获取标示符
标示符是有服务进程产生的,还要让客户进程得到这个标示符才能实现进程间通信。
(1)告诉键
①把键写文件
将一个键值写入一个公用的头文件,服务和客户进程均包含这个头文件
自定义或者接口产生一个键------》由键产生一个标示符ipc结构体)-----》根据标示符操作ipc结构体。
键的三种类型:
创建ipc结构必须要指定key值。
1、key=IPC_PRIVATE
调用创建IPC结构体的接口时如果指定IPC_PRIVATE一定会创建一个IPC结构。
2、指定一个数值
但是有可能该键已经和一个IPC结构已经结合了。
3、调用ftok()产生一个键值
三、创建IPC前的准备
1、ftok()
#include
#include
key_t ftok(const char *pathname, int proj_id);
参数pathname必须引用一个现存的文件,id就是一个随便的整形变量即可
2、权限结构ipc_perm
每个IPC结构都包含一个struct ipc_perm类型的成员,struct ipc_perm{
uid_t uid;
gid_t gid;
uid_t cuid;
gid_t cgid;
mode_t mode;
}
待续。。。。。。。。。。
阅读(625) | 评论(0) | 转发(0) |