1. 概述

管道,由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道、FIFO文件。
命名管道(FIFO)不同于无名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样,即使与 FIFO 的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过 FIFO 相互通信,因此,通过 FIFO 不相关的进程也能交换数据。
命名管道(FIFO)和无名管道(pipe)有一些特点是相同的,不一样的地方在于:

  1. FIFO 在文件系统中作为一个特殊的文件而存在,但 FIFO 中的内容却存放在内存中。
  2. 当使用 FIFO 的进程退出后,FIFO 文件将继续保存在文件系统中以便以后使用。
  3. FIFO 有名字,不相关的进程可以通过打开命名管道进行通信。

2.创建有名管道

2.1 命令

在这里插入图片描述

2.2 函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.有名管道的读写

在这里插入图片描述
unlink()函数功能即为删除文件。执行unlink()函数会删除所给参数指定的文件。

写管道:在这里插入图片描述
close(fd);
读管道:在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
若此时没有写端的,那么会在打开时阻塞!

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐