文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>UNIX网络编程卷2进程间通信读书笔记(四)—XSI IPC

UNIX网络编程卷2进程间通信读书笔记(四)—XSI IPC

时间:2007-04-10  来源:湖光倒影

三.信号

       信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。由于前面已经介绍,这里就不再说了。

 

四.XSI IPC

下面的三种进程间通信方式,即消息队列,信号量以及共享内存,它们之间有很多相似之处。我们统一称它们为XSI  IPC,下面我们先介绍它们的相似之处。

1.标识符和键

       每个XSI IPC都用一个非负整数的标识符(identifier)加以引用。例如,为了对一个消息队列发送或取消消息,只须知道其队列标识符。与文件标识符不同,IPC标识符不是小的整数。当一个IPC结构被创建,以后又被删除,与这种结构相关的标识符连续加1,直至达到一个整数的最大正值,然后又回转到0。

       标识符是IPC对象的内部名。为使多个合作进程能够在同一IPC对象上会合,需要提供一个外部名方案。为此使用了键(key),每个IPC对象都与一个键相关联,于是键就用为该对象的外部名。

       无论何时创建IPC结构,都应指定一个键,键的数据类型是基本系统数据类型key_t,通常在头文件<sys/types.h>中被定义为长整形。键由内核变换成标识符。

       我们用ftok函数创建一个键。

1.

名称::

ftok

功能:

创建一个键

头文件:

#include <sys/ipc.h>

# include <sys/types.h>

函数原形:

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

参数:

path

id

返回值:

若成功返回键,若出错返回(key_t)-1

       path函数必须引用一个现存文件。当产生键时,只使用id参数的低8位。

       注意:

1)pathname一定要在系统中存在

2)pathname一定是使用进程能够访问的

3)proj_id是一个1-255之间的一个整数值,典型的值是一个ASCII值。

 

2.权限结构

       XSI IPC 为每一个IPC结构设置了一个ipc_perm结构。该结构规定了权限和所有者。

struct ipc_perm

{ ushort uid; /*当前用户*/

ushort gid; /*当前进程组*/

ushort cuid; /*创建用户*/

ushort cgid; /*创建进程组*/

ushort mode; /*存取许可权*/

{ short pid1; long pad2;} /*由系统使用*/

}

其中mode权限位设置如下表

 

权限

用户读

用户写

0400

0200

组读

组写

0040

0020

其他读

其他写

0004

0002

 

       在创建XSI IPC结构时,对所有字段都赋初值。可以调用msgctl、semctl或shmctl修改uid,gid和mode字段。我们一会介绍这些函数。

 

 

 

参考资料:

《UNIX高级环境编程》第2版 人民邮电出版社

《UNIX网络编程》第2版 清华大学出版社

《POSIX多线程程序设计》 中国电力出版社

《Linux网络编程教程》 北京希望电子出版社

还有网上的一些资料

特别感谢CU论坛的上的朋友们。

 

       作者:刘宁 现就读于东北大学东软信息学院计算机科学与技术系

邮箱:[email protected]

blog:http://hgdy.cubolg.cn

   

 

 

相关阅读 更多 +
排行榜 更多 +
骑战烈火之剑作弊菜单版

骑战烈火之剑作弊菜单版

角色扮演 下载
诸神的迷宫

诸神的迷宫

动作格斗 下载
芸生

芸生

购物比价 下载