1.2.8. 命名管道(先进先出)

命名管道是一个像管道一样的文件。你把内容放进了文件,它从另一端出来。因此,它被称为FIFO,即先进先出:你从管道这端先放进去的东西会从另一端先出来。

如果对一个命名管道进行写入操作,写入的过程不会被终止,直到写入的信息从管道中被读取出来。读取过程将会持续到没有信息可以读取为止。管道的大小始终是零,它不存储数据,它只是连接两个过程,像shell提供的 “ 1| 2” 语法功能一样。然而,一旦管道有了名称,这两个进程就可以不必在同一个命令行,甚至由同一个用户运行。管道是 UNIX 的一个非常有影响力的创新。

尝试下列例子

  1. $ cd; mkfifo mypipe
  2. $ echo "hello" >mypipe & # 放到后台运行
  3. [1] 8022
  4. $ ls -l mypipe
  5. prw-rw-r-- 1 penguin penguin 0 Oct 16 21:49 mypipe
  6. $ cat mypipe
  7. hello
  8. [1]+ Done echo "hello" >mypipe
  9. $ ls mypipe
  10. mypipe
  11. $ rm mypipe