管道

管道的基本概念

什么是管道

当从一个进程连接数据流到另一个进程时,这就是一个管道(pipe)。

ps -aux ``|`` grep root
中的“|”就代表管道。

  • shell负责安排两个命令的标准输入和标准输出。
  • ps的标准输入来自终端鼠标、键盘等。
  • ps的标准输出传递给grep,作为它的标准输入。
  • grep的标准输出连接到终端显示器屏幕时。

2.管道 - 图1


管道的分类

2.管道 - 图2

函数

pipe()函数

作用

创建一个匿名管道,用于进程间通信的单向数据通道。

  1. man pipe
  2. #include <unistd.h>
  3. int pipe(int pipefd[2]);

数组pipefd是用于 返回两个引用管道末端的文件描述符
它是一个由两个整数类型的文件描述符组成的数组的指针。

pipefd [0] 指管道的读取端, pipefd[1]指向管道的写端。
pipe()函数还会返回一个int类型的变量,如果为0则表示创建匿名管道成功,如果为-1则表示创建失败,并且设置errno。