IPC——命名管道FIFO

来源:互联网 发布:知乎提问添加话题 编辑:程序博客网 时间:2024/06/06 04:14

上一篇介绍了进程间通信的最简单的方式:PIPE。由于PIPE通过文件描述符来引用,只能用在相关进程(父子进程)间通信,限制了其使用范围。IPC 的另一种简单方式时命名管道:FIFO。

FIFO能用在不相关进程进程间的通信,引用FIFO的方式是通过UNIX的文件系统,使用文件名。尽管PIPE和FIFO具有相同"进程持续"特性,但是,不相关的进程通过引用FIFO关联的文件名,能够进行通信。FIFO和普通文件一样,拥有文件引用计数,通过unlink作用于FIFO和其作用于普通文件效果一样:如果FIFO的链接数(保存在Inode )为0,并且没有任何进程打开该FIFO ,那么unlink将会回收它的空间。

但是,FIFO不能用在网络文件系统NFS中,只能用在本地文件文件系统中。

特点:

(1)不相关进程间可以同信

(2)拥有文件系统提供的文件名

(3)生命周期时进程持续的

下面的代码是一个简单的client-server系统,描述了多个client和一个server通信的场景,server的实现方式时“迭代方式”。