UNIX网络编程卷2进程间通信读书笔记(四)—XSI IPC
来源:互联网 发布:网络支持中心网站域名 编辑:程序博客网 时间:2024/05/22 05:29
三.信号
信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。由于前面已经介绍,这里就不再说了。
四.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网络编程教程》 北京希望电子出版社
- UNIX网络编程卷2进程间通信读书笔记(四)—XSI IPC
- UNIX网络编程卷2进程间通信读书笔记汇总
- UNIX网络编程卷2进程间通信读书笔记汇总
- UNIX网络编程卷2进程间通信读书笔记-管道
- UNIX网络编程卷2进程间通信读书笔记(二)—管道 (2)
- UNIX网络编程卷2进程间通信读书笔记(三)—有名管道 (2)
- UNIX网络编程卷2进程间通信读书笔记(二)—管道 (1)
- UNIX网络编程卷2进程间通信读书笔记(三)—有名管道 (1)
- UNIX网络编程卷2进程间通信读书笔记(一)—概述
- UNIX网络编程卷2进程间通信读书笔记—概述
- UNIX网络编程卷2进程间通信读书笔记—有名管道
- UNIX网络编程卷2进程间通信读书笔记—System V消息队列
- UNIX网络编程卷2进程间通信读书笔记—Posix信号量
- UNIX网络编程卷2进程间通信读书笔记----记录锁
- UNIX网络编程卷2进程间通信读书笔记 共享内存区
- 《UNIX网络编程 卷2》读书笔记(四)
- UNIX网络编程 卷2:进程间通信
- 【Unix编程】进程间通信(IPC)
- 用oracle触发器实现出入库
- 摘录:《晨间日记的奇迹》
- CRM绩效管理优劣 四阶段指点出迷津
- 再次开始SmartClient
- java jdbc derby
- UNIX网络编程卷2进程间通信读书笔记(四)—XSI IPC
- 持久窗口与临时窗口
- 笛卡尔思考的步骤
- IT员工离不开的12项技术
- Intel 82801H(ICH8) HD Audio Controller 的驱动问题
- 压缩算法的历史
- spinlock与linux内核调度的关系
- 摘要:活力4大招,打造「不累」体质!
- 六秒钟呼吸法,让你放轻松