一 IPC分类:
(1)IPC(interprocess communication):消息传递和同步。
(2)主要四个领域:
*消息传递(管道、FIFO、消息队列)
*同步(互斥锁、条件变量、读写锁、信号量)
*共享内存区(匿名共享内存区、有名共享内存区)
*过程调用(Sun RPC)
二 IPC对象的持续性:
(1)随进程持续(process-persistent):一直打开到打开着IPC对象的最后一个进程关闭该对象为止。例如:管道和FIFO。
(2)随内核持续性(kernel-persistent):一直存在到内核重新自举和显式删除IPC对象为止。例如:Posix消息队列、信号量和共享内存区必须至少是随内核持续的,也可是随文件系统持续的,具体取决于实现。
(3)随文件系统持续性(filesystem-persistent):IPC对象一直存在到显式删除该对象为止。例如:使用映射文件实现的Posix消息队列、信号量和共享内存区。随文件系统持续通常很少用。
三 命名空间:
(1)当两个或多个无亲缘关系的进程使用某种形式IPC通信时,该IPC对象必须由一个名字或标识符。
(2)除管道没有名字之外(因此不能用于无亲缘关系的进程间通信),对于其他所有形式的IPC,名字是进程间彼此连接以交换消息的手段。
四 fork、exec和exit对IPC对象的影响:
五 Posix IPC:
(1)Posix IPC类型:
*Posix消息队列
*Posix信号量
*Posix共享内存区
(2)Posix IPC名字:
*三种类型IPC对象都是用路径名标示的,但是这些路径名既可以是文件系统中的实际路径名,也可以不是,而这点不一致性会导致一个移植性问题。
(3)所有Posix IPC函数: