Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104044
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 402
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-22 11:09
个人简介

摸着石头过河

文章分类

全部博文(30)

文章存档

2015年(2)

2014年(28)

我的朋友

分类: LINUX

2014-11-19 17:24:02

一、进程间通信的技术
     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) |
给主人留下些什么吧!~~