zoukankan      html  css  js  c++  java
  • XSI IPC机制的优缺点

     
    XSI IPC 包括消息队列、信号量以及共享存储器,他们都依托标识符和键来实现的,这就像是管道靠文件描述符来实现一样!

    1、标识符和键

      标识符是内核为每个IPC结构加以引用的,所以也称标识符是XSI IPC的内部名。键则使多个合作进程能够在同一IPC对象上会合,这是外部名。

    2、3种得到键的方式

       1)服务器进程可以指定键IPC_PRIVATE创建一个IPC结构,将返回的标识符存放在某处(某个文件)以便客户端程序使用。

       2)在一个共用头文件中定义一个客户进程和服务器进程都认可的键。然后服务器进程用这个指定此键创建一个新的IPC结构。但是这里有个问题是,这个键可能已经被一个IPC使用,这样的话,msgget\semget\shmget 就会错误返回。

       3)客户端和服务器都认可一个路径名和项目ID(0-255),使用ftok将这两个值变换成一个键。然后服务器使用这里键创建一个IPC结构。

       key_t ftok(const char *path,int id);

    3、XSI IPC创建必须满足的条件

      XSI IPC创建函数msgget\semget\shmget都需要两个类似的参数key_t和一个整形的flag.

      在满足下列2个条件之一时,才可能成功创建一个XSI IPC结构。

      1)key为IPC_PRIVATE

      2)key还没有和一个IPC结构相关联,并且flag指定了IPC_CREAT标志。

      如果希望创建一个新队列,而且要确保不是引用具有同一标识符的一个现存IPC结构,那么必须在flag中指定IPC_CREAT和IPC_EXCL位。

     4、XSI IPC的访问

      消息队列在访问的时候key必须要等于创建该队列的键,并且不应该指定IPC_CREAT和IPC_PRIVATE。

     5、XSI IPC结构中的ipc_perm结构

      struct ipc_perm

      {

            uid_t   uid;    /* owner’s effective user id */

            gid_t   gid;    /* owner’s effective group id */

            uid_t   cuid;   /* creator’s effective user id */

            gid_t   cgid;   /* creator’s effective group id */

            mode_t  mode;   /* access mode */

            ...
     
         mode注释:

          权限           位

         用户读  :      0400

         用户写  :      0200

         组读    :      0040

         组写    :      0020

         其他读  :      0004

         其他写  :      0002

     

  • 相关阅读:
    ASP.NET2.0轻松解决统计图表
    SQL中日期比对 CONVERT转化函数的用法
    闭包理解?
    测试网站速度
    table js(转载)
    js构造造函数
    前端开发 优化(转载)
    使用Gzip压缩提升WEB服务器性能
    在线优化
    IE中的CSS3不完全兼容方案
  • 原文地址:https://www.cnblogs.com/MarkGrid/p/3136972.html
Copyright © 2011-2022 走看看